系统之间怎么实现单点登录?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统之间怎么实现单点登录?相关的知识,希望对你有一定的参考价值。
其实就是我们日常提到的SaaS、ERP、OA等各种软件,通过单点登录实现统一认证,一次登录就可全部查看操作,省去了一个个系统登录的繁杂,同时也给IT运维人员提高了工作效率,节约人力成本。玉符科技可以让系统之间实现单点登录,通过玉符科技单点登录SSO实现统一认证,一次登录就可全部查看操作,省去了一个个系统登录的繁杂,同时也给IT运维人员提高了工作效率,节约人力成本。 参考技术A 主要实现方式有:1、 共享 cookies
基于共享同域的 cookie 是 Web 刚开始阶段时使用的一种方式,它利用浏览同域名之间自动传递 cookies 机制,实现两个域名之间系统令牌传递问题;另外,关于跨域问题,虽然 cookies本身不跨域,但可以利用它实现跨域的 SSO 。如:代理、暴露 SSO 令牌值等。
缺点:不灵活而且有不少安全隐患,已经被抛弃。
2、 Broker-based( 基于经纪人 )
这种技术的特点就是,有一个集中的认证和用户帐号管理的服务器。经纪人给被用于进一步请求的电子身份存取。中央数据库的使用减少了管理的代价,并为认证提供一个公共和独立的 "第三方 " 。例如 Kerberos 、 Sesame 、 IBM KryptoKnight (凭证库思想 ) 等。 Kerberos是由麻省理工大学发明的安全认证服务,已经被 UNIX 和 Windows 作为默认的安全认证服务集成进操作系统。
3、 Agent-based (基于代理人)
在这种解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。这个代理程序需要设计有不同的功能。比如,它可以使用口令表或加密密钥来自动地将认证的负担从用户移开。代理人被放在服务器上面,在服务器的认证系统和客户端认证方法之间充当一个 " 翻译 "。例如 SSH 等。
4、 Token-based
例如 SecureID,WebID ,现在被广泛使用的口令认证,比如 FTP 、邮件服务器的登录认证,这是一种简单易用的方式,实现一个口令在多种应用当中使用。
5、 基于网关
6、 基于 SAML
SAML(Security Assertion Markup Language ,安全断言标记语言)的出现大大简化了 SSO ,并被 OASIS 批准为 SSO 的执行标准 。开源组织 OpenSAML 实现了 SAML 规范。 参考技术B 在不同的场景下,单点登录采用不同的实现方式。应用系统是同一域名下的不同站点时,通常采用验证cookie的方式,应用系统在同一域名下但是数据不同子域时,采用cookie与sessionID相结合的方式,应用系统分属不同域时,采用站点间传递cookie和重定向的方式。玉符科技对不同场景,单点登录方式也不同。目前市场上主流的做单点登录的公司比如玉符科技,深耕单点登录SSO领域,可以满足客户遇到的如何实现单点登录?企业如何实现统一认证?的难题,通过玉符单点登录可以快速的帮助企业实现云认证,像SAML、OIDC、CAS、Ouath等主流协议全部支持,可以实现快速部署,交付周期短,适合各行业企业。
单点登录实现原理和单点登录服务器设计
sso单点登录是什么
java实现SSO
什么是SSO
SSO(Single Sign On)单点登录是实现多个系统之间统一登录的验证系统,简单来说就是:有A,B,C三个系统,在A处登录过后,再访问B系统,B系统就已经处于了登录状态,C系统也是一样。举个生活中栗子:你同时打开天猫和淘宝,都进入login界面,都要求你登录的,现在你在淘宝处登录后,直接在天猫处刷新,你会发现,你已经登录了,而且就是你在淘宝上登录的用户。说明他们实现了SSO,并且持有相同的信息。
当然这个特性意味着它的使用场景是:同一公司下的不同子系统,因为对于SSO来说,每一个子系统拥有的信息都一样,是用户的全部信息,如果是不同公司,那这肯定不合适。现在的天猫和淘宝就是这样的一套SSO。
客户端实现步骤
客户端api
1.sso/login?service=http://www.baidu.com 登录接口判断用户是否登录
- 未登录跳转至登录界面
- 已登录 返回 https://www.baidu.com/?ticket=ST-4267646-GW54oRgSfRCIdffuJNSt-cas service地址附带ticket
票据 注意票据是一次性的,根据当前访问login接口的service和session组合生成一次ticket 使用后失效
2./sso/validate?ticket=ST-3106711-eQcTqZUlfdU3R2fmL6Wk-cas&service=http://www.baidu.com 票据验证接口
- 更具票证获取用户账号接口
- 验证参数有ticket 和service 中的 url 这个url 需和login 中获取票证的url一致
3.如获取用户账号成功则登录当前系统,设置保存当前系统用户状态
服务端
1.login 接口功能
- 判断是否登录
- 是: 公共步骤
- 否:进入登录界面
- 进行登录将登录后userId 存入session 中
公共步骤:生成 url+sessionId+md5 生成ticket 将ticket存入session中重定向service 中的url 并且附带ticket参数
2.获取用户账号接口validate
- 根据validate 接口获取对应ticket 和url 在session 中进行校验判断是否已有登录标识,如果有则返回userId信息
3.out接口,退出单点登录接口
-清除对应session缓存的用户信息
以上是关于系统之间怎么实现单点登录?的主要内容,如果未能解决你的问题,请参考以下文章