Spring Security OAuth - 它可以使用 Keycloak 中的 JWT 令牌吗

Posted

技术标签:

【中文标题】Spring Security OAuth - 它可以使用 Keycloak 中的 JWT 令牌吗【英文标题】:Spring Security OAuth - Can it consume JWT tokens from Keycloak 【发布时间】:2016-04-25 01:08:58 【问题描述】:

在 Spring Security OAuth 中,它可以使用/使用从使用 Keycloak 进行身份验证的用户生成的 JWT 令牌吗?就这一点而言,Keycloak 的 open-id,但这一切似乎都非常相似。我仍在尝试了解分界线以及与此相似或相同的地方。

基本上,我想在 REST 客户端中单独进行身份验证,然后使用 Authorization 标头中的令牌对某些 Web 服务进行 REST 调用。 Spring Security OAuth 中似乎有一些 JWT 的东西,所以我想知道我实际上可以使用它而不是 Keycloak Spring 的东西吗?有没有这样的例子? (我很想在我的控制器中对不同的方法使用 Spring 安全检查)

【问题讨论】:

【参考方案1】:

您可以使用 Keycloak Spring 适配器并仍然依赖 Spring Security 注释来确保控制器安全。 Keycloak Spring 适配器的主要目的是简化与 Keycloak 的集成以进行交互式登录,并将 JWT 访问令牌声明正确映射到 Spring Security 身份验证上下文中。

阅读Spring Security OAuth2 documentation,我觉得它还没有完全准备好处理 OpenID Connect JWT 访问令牌。但是,它是可定制的,因此很可能可以正常工作。

如果您使用 Keycloak 作为 OIDC 服务器,我现在的建议是坚持使用 Keycloak Spring 适配器。它可以节省您的时间,并且已经过 Keycloak 的良好测试。

【讨论】:

我最终选择了用于 Spring Boot 的 Keycloak 适配器。与此同时,我从github.com/Smartling/smartling-keycloak-extras 更新了 KeycloakUserDetailsAuthenticationProvider 以获得 UserDetails 对象。很遗憾你不能走全春季路线,但肯定有一些缺失。很遗憾我没有使用令牌商店的东西。 对于登陆这里的人,我邀请您查看 Spring Security 5.1+ 版本,该版本使用 JWT 随 OIDC 一起提供。这里的链接是当前最新版本(5.2.0.RC1):docs.spring.io/spring-security/site/docs/5.2.0.RC1/reference/…

以上是关于Spring Security OAuth - 它可以使用 Keycloak 中的 JWT 令牌吗的主要内容,如果未能解决你的问题,请参考以下文章

spring-security-oauth2注解详解

spring-security-oauth2注解详解

Spring Security OAuth - 它可以使用 Keycloak 中的 JWT 令牌吗

Spring 中的 spring-security-oauth2 与 spring-security-oauth2-core

将标头添加到 oauth/token 响应(spring-security)

oauth2 spring-security 成功和失败处理程序