ASP.NET单点登录 TOKEN的使用
原网址链接:http://blog.csdn.net/wyfde123/article/details/6030413
asp.net 跨域单点登录实现原理:
当用户第一次访问web应用系统的时候,因为还没有登录,会被引导到认证中心进行登录;
根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,返回给用户一个认证的凭据;
用户再访问别的web应用的时候就会将这个Token带上,作为自己认证的凭据,
应用系统接受到请求之后会把Token送到认证中心进行效验,检查Token的合法性。
如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。
所有应用系统共享一个身份认证系统。
认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;
认证成功后,认证系统应该生成统一的认证标志,返还给用户。
另外,认证系统还应该对Token进行效验,判断其有效性。
所有应用系统能够识别和提取Token信息要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。
应用系统应该能对Token进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。
登录站点的两种情形:
情形一、匿名用户:匿名用户访问分站a上的一个授权页面,首先跳转到主站让用户输入帐号、密码进行登录,验证通过后产生主站凭证,同时产生Token,跳转回分站a,此时分站a检测到用户已持有Token,于是用Token再次去主站获取用户凭证,获取成功后允许用户访问该授权页面。同时产生分站a的本地凭证,当该用户需要 再次验证时将先检查本地凭证,以减少网络交互。
情形二、在分站a登录的用户访问分站b:因为用户在分站a登录过,已持有Token,所以分站b会用Token去主站获取用户凭证,获取成功后允许用户访问授权页面。同时产生分站b的本地凭证。