0

第一次了解sso系统,有个疑问。
假设存在ab两个域名完全不同的server,c作为认证中心负责分发token/ticket。
这时用户X取得了c的认证登录了a站,然后不从a直接转跳到b,而是从新页面打开b,b这时如何知道当前要登录的用户是X而不是W,Y,Z呢?

3个回答

1

已采纳

假设登录信息保存在 session 中
有 a.com,b.com,c.com 三个网站
在 a.com 点击登录,跳转到 c.com?returnUrl=http://a.com
输入帐号密码,然后使用 AJAX 进行验证,如果验证成功,返回一个 token,然后使用 AJAX 请求这俩个网站
如:

$.getJSON("http://a.com/login?token=xxxxxxx");
$.getJSON("http://b.com/login?token=xxxxxxx");

此时 a.com,b.com 根据传入的 token 参数往 c.com 进行校验,如果校验成功,在 session 中保存登录信息,此时直接打开 b.com,就会发现已经登陆了

1

有个物种叫cookie

0

因为用户在认证中心已登录, 所以C的cookies有用户信息, C会把用户信息传递给B。

撰写答案