原创网站设计wordpress custom fields
前言
单点登录,指的是用户在多个系统之间切换时,只需要登录一次,就可以访问所有系统,无需重复登录。本文以政务系统中省平台和国家平台互认为例,阐述双用户体系下(各平台独立账号)实现SSO的两种核心场景:信任传递登录(国家平台登录后无缝进入省平台)与隐性登录(省平台登录后自动登录国家平台),并详解配套的统一登出机制。
省政务平台与国家平台互认
一、用户体系背景
在政务系统场景下,存在多个用户体系,例如A省政务系统中用户信息存在本省政务系统,同时,由于自然人身份信息的强核验性和唯一性,以证件信息为标识可以准确定位每个人,因此,该用户信息也会同步到国家平台。但是登录各平台的账号信息不是相同的,因此可以看作两套用户体系。
二、信任传递场景
国家平台登录后,打开对接过的省份系统,不做任何操作,省份系统进入登录状态。具体流程为:
1.用户登录国家平台:输入账号密码,国家平台通过认证中心验证,生成tokenSno和authCode并放入国家平台的session。
2.用户访问省平台首页。
3.省平台的拦截器判断用户未登录(省平台未登录),重定向到国家平台的loginTrust接口,并传递backUrl(即省平台的receiveTicket地址)。
4.国家平台的loginTrust接口:
a. 从国家平台的session中获取tokenSno和authCode。
b. 检查回调地址(即backUrl)是否合法。
c. 验证authCode和tokenSno是否有效。
d. 都通过后,根据tokenSno获取token(这里应该是从认证中心获取?)
e. 验证token(可能是验证其有效性)。
f. 然后从认证中心根据token获取ticket(注意:用户描述中是“获取tocket”,但后面都是ticket,应理解为ticket),将ticket拼接到回调地址(backUrl)并重定向回省平台的receiveTicket地址。
5.省平台的receiveTicket接口接收到请求(携带ticket),通过SDK调用国家平台的getTokenWithTicket接口(传入ticket)获取token。
6.国家平台通过getTokenWithTicket接口验证ticket并返回token给省平台(通过SDK返回)。
7.省平台后台处理token:通过SDK调用国家平台的getUserWithToken接口(传入token)获取用户信息。
8.国家平台返回用户信息。
9.省平台判断用户是否存在:
如果不存在,则注册到省平台(本地创建用户)。
如果存在,则跳过注册。
10.调用省平台的认证中心生成token(这里是省平台自己的token),放入省平台的session。
11.完成登录,用户即可访问省平台。
三、隐性登录
省平台登录后,携带授权码和人员标识访问国家平台接口,实现国家平台登录,具体流程为:
1.用户访问省平台首页,触发拦截器
2.拦截器发现未登录,重定向到国家平台loginTrust接口(带backUrl参数)
3.国家平台loginTrust检查session中没有tokenSno/authCode(即国家平台未登录)
a.重定向到国家平台的applyAuthCode接口
b.applyAuthCode接口生成授权码(authCode),存入session和Redis(设置过期时间)
c.重定向到省平台的receiveAuthCode接口(携带authCode)
4.省平台receiveAuthCode接口将authCode存入session,并重定向到省平台登录页面
5.用户在省平台登录页面输入账号密码登录
6.省平台认证中心验证账号密码,生成token(省平台token)存入session
7.判断用户是否已同步到国家平台,若没有则同步
8.省平台通过SDK调用国家平台的getNatureToken接口(传递authCode和人员标识)
9.国家平台根据人员标识查询人员信息,然后生成国家平台的token,并与authCode绑定
10.完成隐性登录,省平台重定向到首页(或登录前页面)
统一登出
国家平台点击登出按钮,各平台也退出登录状态。实现方案为并发调用各接入平台提供的登出地址,具体为:
1.用户在国家平台点击登出按钮,触发登出逻辑。
2.国家平台发送登出消息到MQ。
3.消息处理模块消费MQ中的登出消息。
4.消息处理模块从管理平台获取国家平台提供的对接省份系统的证书信息(包括每个省份系统的登出地址)。
5.消息处理模块根据证书标识accessId获取对应的省份系统登出地址。
6.消息处理模块并发调用各省份系统的登出地址,实现统一登出。
总结
政务系统单点登录(SSO)核心方案通过“信任传递登录”“隐性登录”“统一登出”三大机制,实现省平台与国家平台双向互认:用户在国家平台登录后,凭借票据(ticket)和会话凭证(tokenSno/authCode)可自动跳转登录省平台(无密码验证);反之,在省平台登录时,通过授权码(authCode)和人员标识静默绑定国家平台身份,完成双向无感认证;登出时采用消息队列(MQ)触发省级系统并行销毁会话,以数字签名保障跨系统调用安全。整套方案在独立用户体系下,通过票据交换、授权码中继和分布式并发控制,构建了跨政务系统的“一次登录,全域通行;一处登出,全局生效”安全闭环,支撑亿级用户规模的政务身份协同。