使用 Spring Security 5 OAuth2 实现 Keyclock 授权服务器

Posted

技术标签:

【中文标题】使用 Spring Security 5 OAuth2 实现 Keyclock 授权服务器【英文标题】:Implement Keycloack Authorization server using Spring Security 5 OAuth2 【发布时间】:2020-07-23 15:43:03 【问题描述】:

我编写了一个使用 Spring Cloud Netflix 的软件系统。由于 Spring Security 5 不支持编写授权服务器(请在这里大喊https://github.com/spring-projects/spring-security/issues/6320),我需要编写自己的授权服务器。我希望我的应用程序允许社交登录和用户名/密码注册,有一个自定义登录页面,但也使用 keycloack。我什至不知道从哪里开始,如果您有任何文档或代码示例,请提供。

【问题讨论】:

为什么需要创建自己的授权服务器? Keycloak 可以在同一实例中处理社交和第一方登录。 您真的不想编写自己的授权服务器。使用 Keycloak,一切顺利。 如果我希望我的第一方登录发生在 Web 应用程序和社交登录仅从移动设备(管理员来自网络,客户端来自移动设备)。我需要两台 Keycloak 服务器吗?如何自定义登录页面? 【参考方案1】:

您可以使用 cas 项目。通过使用覆盖,可以轻松设置和自定义: https://github.com/apereo/cas-overlay-template/blob/master/README.md

它提供了一个前端,您的用户可以被重定向到并可以登录。成功登录后,用户将被重定向回您的网页。前端是完全可定制的。

它支持各种身份验证提供程序,例如 keycloak、数据库或 Google/Facebook。

基本设置完成后,您只需在 gradle 文件中添加依赖项,在 application.properties 中配置您的 keycloak/database/... 即可开始将其用作身份验证服务器。

它非常适合微服务环境,并由实施安全最佳实践的专业人员策划。

https://apereo.github.io/cas/6.1.x/planning/Getting-Started.html

【讨论】:

以上是关于使用 Spring Security 5 OAuth2 实现 Keyclock 授权服务器的主要内容,如果未能解决你的问题,请参考以下文章

在没有 servlet api 的 webflux 项目中使用 OAuth2 和 Spring Security OAuth2 和 reactor netty

具有密码授予类型的 WebClient 的 Spring Security OAuth 客户端不要求新令牌

使用 spring-security-oauth2 2.0.5.RELEASE 保护 Spring REST 服务

如何在 spring-security 5.2 中增加 RemoteJWKSet 缓存 TTL

我们如何使用带有 Spring 5.0 的最新 spring-security-oauth2 jar 来实现授权服务器?

使用 Spring Boot 2 和 Spring Security 5 进行多因素身份验证