背景:部分第三方平台需要作为独立登录源对接教育号登录,使用自己用户密码登录平台派发自己的code,然后到教育号对接第三方登录,需要教育号支持指定应用和带redirect_uri进行跳转。

数字基座应用跳转登录对接流程

sequenceDiagram participant user as 第三方平台前端 participant 第三方平台 as 第三方平台后端 participant thirdApp as 数字基座应用 participant openidaas as 教育号 user ->> 第三方平台: 用户在第三方平台侧登录 第三方平台 -->> user: 登录成功 user ->> 第三方平台: 获取用户在第三方平台侧的code 第三方平台 -->> user: 返回第三方平台的code user ->> openidaas: 调用pass/third_account_login消费code openidaas -->> user: 返回教育号侧该第三方平台对应的教育号侧应用身份的code,并种下cookie opt 可选调用 user ->> openidaas: 调用open/access_token 用教育号的code换取token openidaas -->> user: 返回access_token user ->> openidaas: 调用account/userinfo 使用用户态token换取userinfo openidaas -->> user: 返回userinfo end opt 数字基座应用跳转 user ->> user: 用户点击数字基座应用 user ->> openidaas: 点击教育号应用进行跳转(open/oauth2/authorize?base_appid={第三方平台应用}&appid={targetAppId}) openidaas -->> thirdApp: 重定向到数字基座应用首页(携带教育号的code) end user ->> openidaas: 退出登录,调用open/logout/30000 openidaas ->> user: 完成教育号登录态清理

0.前提假设第三方平台在教育号申请的平台应用appId为30000。

1.需要第三方平台在走完自己的账号登录后直接下发code,即不需要每次点击教育号应用都从新下发code。

2.下发code后使用iframe嵌套页面调用sso.qq.com域名的第三方登录,接口为https://sso.qq.com/pass/third_account_login ,整体对接前需要在教育号20000超管上配置第三方账号来源,即需要配置账号来源以及对应到教育号的应用30000,然后第三方登录接口下发第三方平台应用30000身份的code,同时下发cookie。

3.在点击应用进行跳转时,接口为https://sso.qq.com/open/oauth2/authorize?base_appid=30000&appid={targetAppId} ,普通应用要求当前所在机构都安装了30000和targetAppId。特殊20000教育号的应用管理也的跳转需要添加白名单允许30000跳转至20000。

4.在第三方平台页面点击退出时需要调用教育号的登出接口,接口为https://sso.qq.com/open/logout/30000

5.在教育号登录态失败是需要做特殊处理,第三方平台前端在本页面调用open/oauth2/authorize接口,如果教育号登录态失效则直接返回http status=200报错信息。第三方平台前端重新获取code走第三方登录接口重试。

6.调用失败场景需要重新获取第三方平台的code,然后调用pass/third_account_login接口。

7.定时刷新token,重新获取第三方平台的code,然后调用pass/third_account_login接口。

© 1998 - 2021 Tencent Inc. All Rights Reserved all right reserved,powered by ePaaS.更新时间: 2024-03-04 10:24:47

results matching ""

    No results matching ""

    results matching ""

      No results matching ""