多少
登录校验代码示例
登录接口代码实现
此方案不好,因为只要在一个域a.com下登录时,同时需要通过隐藏的iframe向单点登录系统下的所有域a.com和b.com下同时写cookie。
共享cookie:
完全同一个域下
同一个父域,不同子域:指定设置同一个父域下
完全跨域(a.com和b.com):登录a.com成功时更新cookie,同时建议b.com也更新cookie
cookie 的校验,主要通过从 request 中获取用户本地的 cookie 中的value 值 “sso”进行校验是否相同
使用 <result>标签来根据验证通过后的 success 返回值参数进行跳转到原请求地址 .
具体的跳转方式为重定向
根据用户名、密码进行用户的验证,通过后设置 Cookie 并使用Response.addCookie(object)响应给客户端
同域统一登陆接口编写
同域下cookie可见
同父域下cookie可见
同父域SSO登陆验证
单点登录同一域名,但登录的时候传URL重定向
SSO实现逻辑 通过cookie验证用户的身份,配置拦截器拦截所有请求,当访问站点时,拦截方法中判断客户端是否存在指定cookie以及是否有效,满足条件则跳主页面,否则跳登录页面.当登录并验证成功后定义cookie并写入客户端.
SSO原理:
购票
存储票据
查验票据
门票作为例子:
sso核心技术分析流程图
跨平台登录
学习笔记:
https://github.com/CoderDream/imooc-sso
利用景点通票流程讲解SSO系统
SSO原理简述:在没有登录的情况下,访问同域名下的不同应用,中的某个应用的时候,由于没有cookie,会跳转到认证中心,认证中心会让用户去登录;登录之后,有了cookie,之后再访问其他应用的时候,由于cookie的关系,其他应用回去询问认证中心这个cookie是否是有效的,有效的话,就把资源给用户,无效又重新登录
1、同域SSO
不同应用位于同一域名下
2、跨域SSO
不同应用位于不同域名下
java特点:平台无关
sso(single sign on)一处登录,处处穿梭