# 全国企业采购交易寻源询价系统用户中心登录接入文档说明

# 统一认证时序图

img.png

# 统一认证时序说明如下

① 当用户访问三方系统受保护资源时,校验局部会话是否有效。

② 局部会话不存在或失效,三方系统跳转平台统一认证页面(统一认证页面地址由平台提供),做统一认证。 请求统一认证页面时需要携带透传参数AppKeyAppKey 由平台提供

如:

https://dev-ssp-xyxj.cneptp.com/passport/login/check?appKey=22b40fd59c9a4c9486fb13dd90929fa7&redirect=https%3A%2F%2Fwww.xxx.com%2Fkjkfje
1

③ 校验全局会话,由账号中心校验当前全局会话是否有效。

④ 会话已失效,则跳转账号中心统一登录页面。 (统一登录页面由平台提供)

⑤ 账号中心进行登录校验,校验成功生成账号中心的全局会话。

⑥ 账号中心生成授权令牌。(平台建议三方系统自行维护此令牌)

⑦ 账号中心携带授权令牌重定向到三方系统的登录成功回调地址。 (回调地址需要在申请接入时提供给平台,回调具体内容详见:登录成功回调地址

⑧ 三方系统接收到授权令牌,则向账号中心发起请求来校验令牌是否合法。 API 参见:令牌校验

⑨ 平台校验当前令牌有效,返回对应的用户信息。

⑩ 由三方系统生成局部会话。

# 统一认证地址

三方系统需要登录时,需携带参数跳转到此地址完成统一认证流程。

账号中心统一认证测试环境页面地址: https://dev-ssp-xyxj.cneptp.com/passport/login/check
账号中心统一认证生产环境页面地址: https://account.cneptp.com/passport/login/check
1
2

测试示例:

# 三方需要修改对应的appKey和需要透传的参数
https://dev-ssp-xyxj.cneptp.com/passport/login/check?appKey=22b40fd59c9a4c9486fb13dd90929fa7&redirect=https%3A%2F%2Fwww.xxx.com%2Fkjkfje
1
2

生产示例:

# 三方需要修改对应的appKey和需要透传的参数
https://account.cneptp.com/passport/login/check?appKey=22b40fd59c9a4c9486fb13dd90929fa7&redirect=https%3A%2F%2Fwww.xxx.com%2Fkjkfje
1
2

# 参数说明

参数名 类型 长度 必填 说明
appKey String - 必填 由平台向三方系统发放的 AppKey
redirect String 512 必填 三方系统需要透参数内容,建议长度不超过 512 的URL地址:https://wwww.test.com/xxxx。地址参数要经过URL编码后使用

# 登录成功回调地址

账号中心登录成功后会重定向到由三方系统提供的回调地址(此地址需提前提供给平台),平台回调此地址会携带令牌、透传参数(在做统一认证时请求中携带的透传参数)。

三方系统收到回调请求后,需要系统后端服务通过令牌校验接口发起 token 校验,token校验成功后才认为用户登录成功。

回调地址请求示例:

https://www.xxx.com/callback?token=iojwvjwe93294324&redirect=https%3A%2F%2Fwww.xxx.com%2Fkjkfje
1

# 回调地址参数说明

参数名 类型 长度 必填 说明
token String - 必填 统一认证完成后平台生成的令牌
redirect String 512 必填 三方系统透参数内容(可用于传递来源页面网址)

# 接入方式

用户中心提供了显示登录和隐式登录两种授权登录的接入方式。

推荐的使用方式:

  1. 需要登录后才可访问的页面要实现 SSO 登录功能,建议利用显示登录的方式接入。
  2. 无需登录即可访问的页面需要显示登录状态的时候,建议利用隐式登录的方式接入。

# 显式登录

当用户访问需要授权的页面时,三方系统校验当前局部会话不存在或失效后,将页面跳转到统一认证页面地址,完成统一认证。

可参考以下代码

# 回调页面地址
var url = 'https://dev-ssp-xyxj.cneptp.com/passport/login/check?appKey=22b40fd59c9a4c9486fb13dd90929fa7&redirect=https%3A%2F%2Fwww.xxx.com%2Fkjkfje';
window.open(url ,'_self')
1
2
3

# 隐式登录

当访问无需授权的页面,三方系统需要显示登录状态时,平台推荐三方系统利用隐式登录的方式实现统一认证。

请注意,隐式登录仅限用于自动授权登录的场景。不适用于需要输入账号密码的场景。

隐式登录利用 iframe 相关技术实现。如果需要 iframe 内认证成功后通知父页面,可参考 iframe 和父页面通讯

iframe在http环境种会造成不携带cookie的问题,所以三方系统使用iframe需要升级到https。

iframe的src地址为统一认证页面地址

参考如下:


<iframe id="hiddenLoginIframe" src="" frameborder="0" width="0" height="0" scrolling="no" style="width:0;height:0;"></iframe>

<script>
  // 需要三方系统校验当前局部会话是否有效,局部会话已失效,则参考以下代码,src地址为统一认证时的请求地址
  document.getElementById('hiddenLoginIframe').src = 'https://dev-ssp-xyxj.cneptp.com/passport/login/check?appKey=22b40fd59c9a4c9486fb13dd90929fa7&redirect=https%3A%2F%2Fwww.test.com%2Findex.html'
</script> 
1
2
3
4
5
6
7

# 用户退出登录

用户退出登录具体对接流程详见:退出登录接入文档说明

# 用户事件推送

用户进行了退出登录、用户信息变更等操作时,平台会向此用户登录过的系统发送对应的推送事件,推送的信息内容会进行签名。 签名规则参见:推送签名说明, 推送 API 文档参见:用户信息变更推送退出登录推送

# 账号中心统一认证页面地址说明

账号中心统一认证测试环境页面地址: https://dev-ssp-xyxj.cneptp.com/passport/login/check
账号中心统一认证生产环境页面地址: https://account.cneptp.com/passport/login/check
1
2

# iframe 和父页面通讯

iframe 和父页面互发消息是利用 window.onmessage 及

父页面利用 window.onmessage 监听消息,示例代码如下:

window.onmessage = function(evt) {
    console.log('消息输出',evt);
    var jsonObj = JSON.parse(evt.data);
    console.log('转换参数',jsonObj);
    // TODO 此处可自定义业务逻辑
}
1
2
3
4
5
6

iframe 页面利用 window.postMessage 发送消息,示例代码如下:

// TODO 具体传递内容需要自定义
window.parent.window.postMessage(JSON.stringify({'type':'loginOk'}),'*'); 
1
2
上一次更新时间: 11/28/2022, 10:32:34 AM