1、单点登录的三种实现方式
1.1 以cookie作为凭证
缺点:
- cookie不安全
- 由于cookie只针对单个域,所以无法跨域访问
1.2 jsonp方式
此种方式可解决第一种方法中无法跨域免登的问题。 什么是jsonp:
- web页面可以加载放在任意站点的js、css、图片等资源,不会受到"跨域"的影响。既然可以调用第三方站点的js,那么如果我们将数据放到第三方站点的js中不就可以将数据带到客户端了吗?
- JSONP(JSON with Padding(填充))是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。
其核心思想是利用JS标签里面的跨域特性进行跨域数据访问, 在JS标签里面存在的是一个跨域的URL,实际执行的时候通过这个URL获得一段字符串, 这段返回的字符串必须是一个合法的JS调用,通过EVAL这个字符串来完成对获得的数据的处理。 JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端, 通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。
1.3 重定向方式
2、集中认证服务(CAS)
这是单点登录的一种解决方案,属于上述第三种。
2.1 CAS1.0与CAS2.0
- CAS1.0也称为基础模式。适用场合:参与SSO的应用都为Web应用,且各应用之间相互独立,没有复杂的集成关系。
- CAS2.0称为代理模式。适用场合:参与SSO的应用存在非Web应用(CAS使用Cookie,故非Web应用不宜于直接做CAS的客户应用),应用之间可以存在集成关系。
2.2 CAS协议内容
2.2.1 术语
client、server、service、proxy、target service
2.2.2 接口
/login、/logout、/validate、/serviceValidate、/proxyValidate、/proxy
2.2.3 凭证
- Ticket Grangting Ticket:用于证明用户在CAS成功登录过。TGT封装了cookie以及用户信息。
- Service Ticket:用于验证用户是否可以访问某个服务,ST由CAS签发,用户需要持ST访问服务。
- Proxy Granting Ticket:Proxy Service认证成功后,CAS会生成PGT,并将值回传给Proxy Service 。Proxy Service拿到PGT后,就可以为Target Service做代理,为其申请PT。
- Proxy Ticket:PT是用户访问Target Serivce的票据。用户经由Proxy Service去CAS获取到PT后,再访问Target Serivce,Target Serivce去CAS验证PT成功后,才允许用户访问。
2.3 CAS1.0的流程图
- 登录
2. 访问某一子服务
|