博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单点登陆SSO实现方式浅谈
阅读量:7014 次
发布时间:2019-06-28

本文共 669 字,大约阅读时间需要 2 分钟。

  hot3.png

    单点登陆(SSO)通常用于将多个系统串联起来,统一身份验证,简化用户登陆步骤,实现登陆一次即可自动登陆所有相互信任的应用系统。架构单点登陆系统有多种方式,先将我所查阅的资料和感悟与大家分享,有不足之处还望不吝赐教。

1. Session共享 

    这算是实现单点登陆最简单的一种方式了。一般用redis集群即可做到,将用户的session id放置在cookie顶级域中即可在子系统中直接应用,代码成本低,有比较好的开源实现,比如  。 但是这种方式的缺点也是明显的,只能应用在子系统中,跨顶级域名的情况就束手无策了。

2. SSO(cookie实现)

    用户先向sso系统请求登陆A系统的凭证,获取凭证之后将凭证存放在cookie中,然后带着cookie请求登陆系统A,系统A检测到凭证的存在向SSO系统验证凭证是否正确,凭证正确则登陆成功,流程草图如下

    此种方式未解决跨域的问题,cookie的存储载体是顶级域,只能在子系统中应用sso,每个子系统单独验证,并且具有白名单功能,在某些不需要跨域的系统中也是一个可行的解决方案。

3. SSO

    与cookie的实现方式不同,这种方式将凭证仅存于url中,流程草图如下

    

3的方式完美解决跨域的问题,也是现在架构中常用的sso解决方案。当中还有许多技术细节没有体现出来,比如白名单的实现,凭证时效性的实现,sso单点系统压力等,这些需要在实际使用中进行修改和调整。

最后奉上sso的一个开源实现 经典的CAS  

 

 

转载于:https://my.oschina.net/lanshu/blog/888967

你可能感兴趣的文章
Nutch爬取JS
查看>>
Java基础——数据类型
查看>>
自然语言处理-感述
查看>>
oracle 显式游标
查看>>
Linux下使用nexus搭建maven仓库私服
查看>>
RedHat6.3配置DNS服务器
查看>>
Linux 系统安全操作要求【互联网金融系统漏洞排查】
查看>>
python计划任务
查看>>
Jakarta Commons:巧用类和组件二(转)
查看>>
分享2个实用的nodejs模块
查看>>
Install Jetbrains Idea 2018.2 to Linux mint 19.0
查看>>
mysql private
查看>>
冒泡排序法
查看>>
Spring源码(一)---BeanFactory
查看>>
java指定垃圾回收
查看>>
aop排除某些类型不拦截
查看>>
Firefox 61已经为Ubuntu 提供支持
查看>>
Google推出了以隐私和安全为中心的变更
查看>>
Scrapy Extensions(扩展)
查看>>
架在云上的商业智能
查看>>