使用CAS做为SSO的性能问题讨论。

最近有个项目使用了开源的CAS做为SSO,看了一些资料之后觉得它某些方面还是相当优秀的。

它的实现原理是这样的:
假设用户在访问http://www.yale.edu/tp之前需要验证身份,我们把用户从http://www.yale.edu/tp重定向到下面的Login URL:
https://secure.its.yale.edu/cas/servlet/login?service=http://www.yale.edu/tp/authenticate.jsp
JSP页面authenticate.jsp是网站资源的一部分。一旦完成了上面描述的初步身份验证,CAS用下面的URL重定向用户浏览器到这个JSP页面:
http://www.yale.edu/tp/authenticate.jsp?ticket=opaque-ticket-string
一旦收到请求,authenticate.jsp页面需要校验这个收到的ticket,它把tickect传送Validation URL(如http://secure.its.yale.edu/cas/servlet/validate)。authenticate.jsp页面需要使用JSSE向Validation URL发送请求并读取数据。当生成这个请求时,authenticate.jsp页面还需要把先前的service ID用service的参数名传送给Validation URL,例子如下:
http://secure.its.yale.edu/cas/servlet/validate?ticket=T&service=S
当CAS从Validation URL收到这个ticket,它检查自己内部数据库,看看是否保存过这个ticket。如果数据库有这个ticket,则进一步检查数据库中和ticket关联的service是否和刚收到的service相匹配。如果匹配,则向请求验证身份的应用URL返回NetID;否则拒绝验证这个请求。

你可能感兴趣的:(SSO)