网易低代码平台-CodeWave登录认证集成 | 单点登录集成Gitee

内容来自CodeWave智能开发平台社区进行了OAuth2认证集成&单点登录SSO解决方案直播后平台优质开发者的实践分享

直播内容:https://community.codewave.163.com/CommunityParent/videodetail?courseid=2743031756009472&subtitleid=null

概要说明:

gitee 类似github 创建应用不需要审核,相比于微博还需要审核应用。

生产环境访问地址: http://ainews-qa.app.codewave.163.com

登录方式:OAuth2认证

Gitee 对接文档参考 : https://gitee.com/api/v5/oauth_doc#/



集成步骤:

1 在gitee上创建应用

https://gitee.com/oauth/applications 点击创建应用,填写应用名称、应用主页、应用回调地址,

调测阶段填写为自己的开发环境地址,加上自定义的回调页面地址,如loginCallback, 并上传logo,权限不需要太多,只选emails就可以。



2 codewave的可视化开发

添加页面loginCallback;

在默认的login登录页上添加文字链接,添加点击事件,其中调用获取code链接,再跳转到gitee授权页面



用户使用Gitee登录后授权应用访问,跳转回事先定义的回调链接,即http://ainews-qa.app.codewave.163.com/loginCallback, 此时链接中会携带code。

编辑页面loginCallback, 增加输入参数code,和进入页面的事件逻辑:

其中调用封装的逻辑loginGitee,传入code,返回定义的dict结构数据,成功时通过js跳转到dashboard;失败时弹窗提示失败。



loginGitee逻辑如图:





其中第一步调用自定义逻辑giteeAuthCode, 传入code,返回access_token。

giteeAuthCode逻辑如图:



其中调用了getAccessToken(如下第二步说明),接口传入的参数添加在应用配置的自定义参数中,调用系统逻辑即可读取。

第二步调用gitee接口 getUserInfo, 该接口需要在“集成中心>应用API管理中”创建API分组,并添加接口:



添加两个接口,注意请求的地址用相对路径,域名在接口的分组添加时设置。

get_user_info, 参考 https://gitee.com/api/v5/swagger#/getV5User

get_access_token 参考 https://gitee.com/api/v5/oauth_doc#/



第三步,拿到access_token后就可以调用 gitee的其它接口了,这里我们单点登录只需要获取用户信息的接口,所以只需要调用定义的getUserInfo接口,返回对象为第三方用户数据结构字典。

第四步,定义一个用户模型,把gitee传来的用户数据映射成我们的用户模型。注意我们后面使用userName来做唯一值。其它信息按需映射。

第五步,调用自定义逻辑,createThirdUserOrUpdate, 即传入映射好的用户模型数据,其中判断数据库中是否存在此用户,存在时更新,否则新增此用户。

第六步,将创建或更新完后的用户与定义的sessionUser数据做映射,注意sessionUser的类型为lcap_auth下的LCAPUser,并非数据库的数据模型。

第七步,调用系统逻辑createToken,完成本地会话登录,返回定义的自定义的数据结构result,其包含code值,默认为1,此处成功返回0。

附应用配置:



3 预览/发布展示

登录页:



gitee授权页:



数据库user表:





附oauth认证原理



用户从codewave发起登录,跳转到第三方gitee请求gitee用户授权应用登录, gitee回调接口时附带code, codewave使用code从后端请求gitee接口,获得access_token,后续接口都可以用此access_token直接调用。

此处只需请求用户信息接口,得到用户信息后在codewave侧查找此关联用户,存在即更新,否则创建新的用户,稍后创建会话完成登录。

  • 29
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值