MS .net Passport学习

来源:互联网 发布:茶叶提香机淘宝 编辑:程序博客网 时间:2024/04/27 13:17

【转载】

.Net Passport认证过程[整理]


1 用户通过浏览器访问Passport合作站点并请求某个页面。

2 在创建页面的过程中,会生成一个Passport管理器对象的实例,并由该管理器对象向用户的浏览器发出请求,来检查是否存在有效的Passport Cookies。

3 如果用户浏览器中没有查找的Cookies,或者合作站点需要重新认证,请求的页面就会加载一个登录Passport的链接。否则,用户被认为是合法的,并且会加载一个注销Passport的链接。

4 用户通过点击Passport登录连接开始认证过程,并且被重定向到Passport登录页面。该重定向的URL由Passport管理器生成,附有一个查询字符串,包含合作站点的指派ID以及认证后返回的URL信息。

5 Passport登录服务器首先检查站点ID以及返回URL是否是已注册的合作站点。如果是,将向用户的浏览器发送一个登录页面。如果不是,终止认证。

6 用户在登录页面上输入其Passport登录凭证并通过SSL向登录服务器发送信息。

7 如果用户被Passport登录服务器认证通过,登录服务器将会提取用户的PUID和Passport Profile。并且创建如下的三个Cookies,并用合作站点的公钥对其进行加密:
-Ticket cookie: 包括PUID和时间戳
-Profile cookie: 存储Profile信息
-Visited Sites cookie: 存储用户已经登录的站点列表

8 这些加密的Cookies作为参数被添加到重定向URL,并且返回给用户浏览器。

9 浏览器在用户的机器上保存Cookies,并且重定向到合作站点,同时包含加密Cookies的查询字符串中被附加在URL中。

10 合作站点上的Passport管理器使用该站点的私钥对Cookies进行解密并从中提取用户的PUID以及Profile信息。

11 认证完成,合作站点可以进一步利用Profile信息进行授权。

疑问:
1 如果用户机器上已经存在Cookies,Passport管理器如何检查Cookies的合法性?
-猜想:首先获取Cookies,然后与Passport服务器进行交互,验证通过后由Passport服务器返回用相应站点公钥加密的Cookies。然后,通过浏览器向用户机器写入新的Cookies。

-引出的问题:
1)Cookie中是否包含服务器信息?
2)请求同一个站点时,是否总是携带相应的Cookies?
3)认证后,访问站点的其它受保护的页面时,也是通过Cookies来认证的?

2 Passport管理器如何检查URL附带的查询字符串的有效性?
-猜想:加密Cookies中包含站点ID的加密信息,通过检查站点ID来检测。
原创粉丝点击