admin管理员组文章数量:1615372
单系统登录
多系统登录
什么是单点登录?
SSO是指在多系统应用中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,
包括单点登录与单点注销两部分。跟redis做的tomcat集群的session共享不是一回事。
单点登录原理
相比于单系统登录,sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。
原理简图
场景:你去爬长城,开始的时候没买票,守门的大爷没让你进,于是你找卖票的买票。买完票之后,再去找守门的大爷,他拿着你的票问卖票的:“这个票是真的吗?”,卖票的说,是真的,于是才放你进门。
实现过程简述
sso采用客户端/服务端架构,我们先看sso-client与sso-server要实现的功能,分以下两部分。
第一,sso-client部分
拦截子系统未登录用户请求,跳转至sso认证中心;
接收并存储sso-server认证中心发送的令牌;
与sso-server通信,校验令牌的有效性;
建立局部会话;
拦截用户注销请求,向sso-server认证中心发送注销请求;
接收sso认证中心发出的注销请求,销毁局部会话。
第二,sso-server部分
验证用户的登录信息;
创建全局会话;
创建授权令牌;
与sso-client通信发送令牌;
校验sso-client令牌有效性;
系统注册;
接收sso-client注销请求发给sso-server,注销所有会话。
备注:
java拦截请求的方式有servlet、filter、intrecepter三种方式,我们采用filter。
最佳实践
实际开发中,使用统一认证中心方案,其中CAS就是基于该方案的开源单点登录系统,
下载地址:https://github/apereo/cas/releases
1.CAS 具有以下特点:
①开源的企业级单点登录解决方案。
②CAS Server 为需要独立部署的 Web 应用,例如为cas server。
③CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl,例如为app1和app2。部署过程参考:https://blog.csdn/qq_24708791/article/details/78535565
https://blog.csdn/postnull/article/details/69262537
2.部署结构
单点登录涉及sso认证中心与众子系统(例如www.126, www.163, epay.163都是子系统),子系统必须集成sso的客户端,sso认证中心则是sso服务端,整个单点登录过程实质是sso客户端与服务端通信的过程。部署图如下:
3.如何部署?
在客户端程序中引入相应的jar包,并修改web.xml。
4.测试
打开app1 url —-> 跳转cas server 验证 —-> 登录成功app1的应用 —->
打开app2 url —-> 显示app2 应用 —-> 注销cas server —->
打开app1/app2 url —-> 重新跳转到cas server 验证.
总结
从结构上看,SSO包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。单点登录涉及sso认证中心与众子系统,子系统与sso认证中心需要通信以交换令牌、校验令牌及发起注销请求,sso认证中心则是sso服务端,整个单点登录过程实质是sso客户端与服务端通信的过程。
本文标签: 单点
版权声明:本文标题:单点登录 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1728693783a1169892.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论