OAuth2标准集成方案

场景描述

使用认证服务认证并登录

实现思路

实现方法

系统提供了OAuth2标准集成方案的代码:main-sso.rar。解压后,放到一个应用的 model/service 目录下。

main/src/main/java/main/controller/OauthController.java 中的 oauthcallback 方法是回调地址对应的 java 方法,这里需要传入两个参数:code 和 location。

1 实现OAuth2标准集成

只需重写main/src/main/java/main/oauth/OauthProcessorImpl.java 中的这两个方法

  • 一是 onRetriveAccessToken,根据 code 获取 accessToken
  • 二是 onRetriveOauthUserInfo,根据 accessToken 获取用户信息

2 登录用户关联组织内用户

在获取用户信息后,系统调用注册影子账户 registerShadowUser 方法(在main\java\main\service\UaaService.java文件中),参数说明如下,其中带星号为必填参数。如果需要使用组织内用户,则 createRealUser=false,username=用户的username

参数名 说明
*openId 会生成uaa中的 username,如果第三方系统唯一值为当前系统同步过去的 username,则需要做md5,否则和正式用户的 username 相同违反唯一约束
*appId 对接的第三方系统的appId,例如微信登录的appid、钉钉的appid
*type 对接的第三方系统类型,比如 cp mp mina dingtalk
username 传递 username 代表不新建真实账户,直接关联 uaa 中存在的真实账户,此操作仅在第一次创建当前影子账户时有效,后续传递 username 不会切换绑定,如需切换绑定,参考解绑后重新绑定逻辑。 此操作有风险,仅支持内网调用,通过外网调用需要管理员权限
unionId 相同unionid的影子账户会自动关联到同一个真实账户
avatar 头像URL,例如:http://wework.qpic.cn/bizmail/iawOJt0XsjdRn6nV7Z0/0
nickname 第三方系统的中文名字
createRealUser 是否创建真实用户,默认自动创建,设置为false不创建

results matching ""

    No results matching ""

    results matching ""

      No results matching ""