千家信息网

如何实现易水公共组件的SSO功能

发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,如何实现易水公共组件的SSO功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。如今,随着互联网技术的发展,网络用户规模越来越大,假如公司
千家信息网最后更新 2025年01月28日如何实现易水公共组件的SSO功能

如何实现易水公共组件的SSO功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

如今,随着互联网技术的发展,网络用户规模越来越大,假如公司的每一个应用都建立一个用户系统,不仅极大的增加了开发的工作量,而且容易形成了信息孤岛,用户在使用公司的每个产品时都需要重复注册一次。因此许多公司为了统一管理,建立了统一认证中心,其他的应用需要通过单点登录即可获取用户信息,用户登录该公司的其他应用时也不需要在重新注册,大大节省公司用户导入成本,也提高用户使用体验。

对于单点登录(SSO)而言,现在技术比较成熟,网上各种教程也比较多,但是很多文章都讲述的不怎么全面,在这里基于spring security简单明了的介绍下时如何实现单点登录功能。

在使用单点登录之前,需要先搭建一个认证中心,例如通过易水公共组件快速搭建一个自己的认证中心,也可以使用现在网络上现成的认证中心,如 谷歌 或 github.

一 在pom文件中加入依赖

完整的pom文件内容如下:

    4.0.0            org.springframework.boot        spring-boot-starter-parent        2.2.0.RELEASE                 com.yishuifengxiao.sso-client    demo    0.0.1-SNAPSHOT    demo    Demo project for Spring Boot            1.8                            org.springframework.boot            spring-boot-starter-oauth3-client                            org.springframework.boot            spring-boot-starter-security                            org.springframework.boot            spring-boot-starter-web                            org.projectlombok            lombok            true                                                          org.springframework.boot                spring-boot-maven-plugin                        

二 加入配置信息

在配置文件中加入以下信息

spring.security.oauth3.client.registration.yishui.provider=yishui# 登录界面上显示的登录类型的名字,可不填spring.security.oauth3.client.registration.yishui.client-name=custom# 该用户对应的clientIdspring.security.oauth3.client.registration.yishui.client-id=zhiyubujian# 该用户对应的clientSecretspring.security.oauth3.client.registration.yishui.client-secret=zhiyubujian# 这里是定值为authorization_code,表示使用授权码模式模式从授权服务器中获取tokenspring.security.oauth3.client.registration.yishui.authorization-grant-type=authorization_code# 回调地址,应该和授权服务器中登记的回调地址一模一样,否则会出错,支持通配符,也可以想下面那样配置为完整的地址spring.security.oauth3.client.registration.yishui.redirect-uri={baseUrl}/login/oauth3/code/{registrationId}#spring.security.oauth3.client.registration.yishui.redirect-uri=http://192.168.0.172:8006/oauth3/code# 授权服务器的authorization地址spring.security.oauth3.client.provider.yishui.authorization-uri=http://192.168.0.172:8000/oauth/authorize# 授权服务器获取token的地址spring.security.oauth3.client.provider.yishui.token-uri=http://192.168.0.172:8000/oauth/token# 授权服务器中获取登录用户信息的地址spring.security.oauth3.client.provider.yishui.user-info-uri=http://192.168.0.172:8000/me#定值,必须配置,否则会出错spring.security.oauth3.client.provider.yishui.user-name-attribute=userAuthentication

注意:

上述配置中的yishui可以为任意值,但是一般最好为有标识意义的值,例如使用google账号登录时,可以进行如下配置:

spring:  security:    oauth3:      client:        registration:          google:            client-id: google-client-id            client-secret: google-client-secret

三 配置启动文件

@SpringBootApplication@RestController//@EnableOAuth3Ssopublic class DemoApplication {    @GetMapping("/me")    public Authentication user(Authentication authentication) {        return authentication;    }    @GetMapping("/")    public String index(Model model,                        @RegisteredOAuth3AuthorizedClient OAuth3AuthorizedClient authorizedClient,                        @AuthenticationPrincipal OAuth3User oauth3User) {        model.addAttribute("userName", oauth3User.getName());        model.addAttribute("clientName", authorizedClient.getClientRegistration().getClientName());        model.addAttribute("userAttributes", oauth3User.getAttributes());        return "index";    }    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);    }}

四 使用单点登录

完成上述配置以后,我们就可以使用单点登录功能了。

例如当我们想要访问 http://localhost:8080/me 时,系统会重定向到到默认的登录页面

注意:这里显示的是默认的登录页面,如果用户想要显示自定义登录界面,可以参见 易水公共组件里面的相关章节进行修改和美化。

点击上面的登录链接,会跳转到授权服务器的登录页面

在此页面输入用户名和密码登录成功后,请求会跳转到原始等请求地址

响应结果如下:

看完上述内容,你们掌握如何实现易水公共组件的SSO功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

0