BTW:“穿越黑暗之门”,引自WOW。
呵呵,言归正传。看到最近不少人谈起跨域认证的话题,下面就我的一些浅薄认识谈谈这个问题,欢迎各
位用$砸死我.
用户D访问域A,域A收集用户信息,使用方法createSession()告诉认证服务器C:用户D要来访问了,他希望跳转到哪个页面,需要将哪些信息一并给他传送过去,并且返回接口的位置.认证服务器C收到信息后进行处理(使用一种自己的加密规则加密),然后生成一个唯一令牌,返回给域A的接口.域A的接口收到这个令牌后,调用C的checkSession()方法,询问C这个令牌是否合法且有效,C返回答案给A说:OK,没问题,这家伙是合法的,然后马上把这个令牌销毁.域A收到OK后,通过用户D在本地的认证.
一段时间过去了,用户D感觉到域A不爽了,于是他想到域B去逛逛.于是,他点击了一个到B的URL地址,域A一看这小子要走了,马上告诉C,这小子想上域B了,域B的接口请做好准备.C控制器收到信息后再进行处理,生成一个唯一令牌返回给域B,域B的接口收到请求后,调用C的checkSession()检查这个令牌是否合法且有效.C检查后告诉B说:没问题,放行吧,然后再把这个令牌干掉.于是,用户D就这样通过了B的认证了.
不知道这样说大家是不是很明白.这中间,我没有告诉你,你的认证服务器应该用C还是java,接口用xmlrpc还是soap还是其他的,数据库用db2还是mysql,实现细节等,因为这些都不是本贴的重点.
欢迎指正. |