想做一个单点登录,但是不知道怎么做
查了一些资料,有个大概的认识最想不通的是通过什么来实现(别简单回复一个通过cookie或者saml来实现就完事啊,说的详细点)想问一下做过的同学 介绍的再详细点

解决方案 »

  1.   

    http://wenku.baidu.com/view/193f8e08bb68a98271fefac3.html
      

  2.   

    多谢回复呃 只是 能否给我点你自己项目里的sso的经验
    网上的那些原理我看了一些了
      

  3.   

    其实cookie和saml都是实现单点登录的路子,但是不是原理。原理就是身份靠第三方认证机构认证(你做的就是这个第三方认证机构。)需要单点登录的APPLICATION都必须信任这个第三方的认证机构,这个第三方的认证机构也必须承认你的APPLICATION。当APP1 和 APP2都是符合这第三方认证机构(STS)的APP的时候,以下操作就是web单点登录的过程。APP1登录完成后,想要不输入密码登录APP2:
    用户打开APP1->需要登录->重定向到STS-> STS提供身份验证页面,用户输入用户名密码->用户通过验证-> STS将登录后的身份信息发回APP1(POST or GET)->APP1登录成功
    想要登录APP2->需要登录->重定向到STS(与APP1使用相同的STS)->STS提供身份验证页面->通过Session或者Cookie对当前的Session进行确定->通过验证->STS将登录后的身份信息发回APP2(POST or GET) ->APP2 登录成功。如果APP1和APP2是桌面应用
    Session或者Cookie就没有什么用了,可以在本地公共部分保存一个Token文件(至于别的APP读取不读取就不一定了,所以才会有SAML、OAuth这些通用的协议),在每次APP1和APP2进行登录的时候,将TOKEN包装为验证信息发送给STS,获取验证信息和TOKEN有效性信息。
      

  4.   

    这些APP自己不应该处理登录逻辑,只根据STS发回的数据作权限绑定和赋予即可。
      

  5.   

    至于细节我都没写,什么超时啊,超时判定啊,数据加密、签名啊,转发规则啊等等的……需要自己根据自己的要求来实现。如果用到SSO的地方比较重要,还是推荐基于一种公共的协议来实现。