Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强
总时长 104:45:00 共408P
此文章包含第231p-第p235的内容
介绍
单点登录(Single Sign-On,SSO)是一种身份验证服务,允许用户使用一组凭据(例如用户名和密码)登录到多个相关但相互独立的软件系统中。在用户进行了一次登录认证后,他们就可以访问其他受信任的系统而无需重新进行身份验证。
SSO 的实现通常包括以下组件:
身份提供者(Identity Provider,IdP):负责认证用户并颁发令牌。用户只需要在身份提供者进行一次登录,然后可以通过令牌访问其他受信任的系统。
服务提供者(Service Provider,SP):受信任的应用程序或服务,依赖于身份提供者来验证用户身份。SP 接受来自身份提供者的令牌,并使用该令牌来授权用户访问其资源。
令牌(Token):由身份提供者颁发的安全令牌,包含有关用户身份和权限的信息。SP 在接收到令牌后,通过验证令牌的签名和有效期来确认用户的身份,并决定是否授权用户访问。
实现 SSO 的方法有多种,其中包括:
基于标准协议的 SSO:使用标准协议(如OAuth、OpenID Connect、SAML等)来实现 SSO。这些协议定义了身份验证和授权的流程,使得不同的系统可以与不同的身份提供者进行集成。
集中式身份管理系统:使用专门的身份管理系统来集中管理用户身份和权限,各个系统通过与该身份管理系统进行集成来实现 SSO。
基于令牌的 SSO:用户在登录时获取一个令牌,然后将该令牌用于访问其他系统。这种方式可以避免在每次访问时都需要与身份提供者进行通信。
SSO 的优点
包括提高用户体验、简化身份管理、减少密码重复使用等。然而,也需要注意安全性和隐私保护等方面的考虑,确保用户的身份信息不被泄露或滥用。
一处登录处处可用
单点登录示例
火绒也可以直接修改hosts(不推荐)
已经聚合了其他三个项目,所以打包一次其他的都会打包
修改配置文件重新打包
失败 原因 无法在maven仓库里找到核心包
还是报错的话 就整个项目重新打包
跳转到
编写单点登录
选择springBoot2.1.12版本
这里写配置到nacos里好一些,这种可能会被修改的,上线之后,不让改了,写配置可以用nacos改
响应里带location 是要重定向到这个location上
命令浏览器重定向到这个网址
新建第二个客户端
使用@CookieValue标签获取当前请求的cookie值
cookie是放在sso域名下的,不管访问哪个客户端,都会判断是否登录,没有登录都会来到sso下,因为第一个客户端登录了留下了cookie并且在sso域名下,第二个就不用再登录就能携带第一个客户coo
总结
在单点登录认证系统里添加一个方法来解析token
在客户端的单点登录方法里调用认证系统的解析方法
这里不要用feign 因为认证系统可能不是java写的(如可能是php写的) (openFeign是springCloud封装的http请求)
最好用http工具类 如HttpUtils或spring的restTemplate
得到响应的值
要登录其他人的得先退出登录,这个单点登录解决的是多个项目之间公用一个登录号
效果
这里使用的是cookie和session进行单点登录,现在已经不流行了,可以使用jwt + serurity单点登录