我的理解是,Keycloak令牌自检不能使用公共客户端调用。但是不知何故,Keycloak Spring Security Adapter验证了访问令牌,即使keycloak.public-client=true。我试图深入研究代码,但无法找到答案。我的问题是,如何使用公共客户端执行验证?Keycloak Spring安全适配器是否有一些内置的解决方案?
7eumitmz1#
JWT验证不需要将令牌提交给它的颁发者,只需要服务器公钥(根据定义,它是公共的)。org.springframework.security.oauth2.jwt.JwtDecoder实现(如NimbusJwtDecoder)检查如exp和iss声明的内容以及令牌签名。Keycloak发布JWT访问令牌。配置了JWT解码器的资源服务器中的Spring安全性不需要反省JWT,它只读取它。您可以使用https://jwt.io之类的工具打开JWT访问令牌,并研究它所包含的数据(并确定可以基于它设置哪些安全规则)。
org.springframework.security.oauth2.jwt.JwtDecoder
NimbusJwtDecoder
exp
iss
Keycloak security adapters are deprecated。不要使用它。请使用以下任一项:
spring-boot-starter-oauth2-resource-server
spring-addons-webmvc-jwt-resource-server
1条答案
按热度按时间7eumitmz1#
JWT验证不需要将令牌提交给它的颁发者,只需要服务器公钥(根据定义,它是公共的)。
org.springframework.security.oauth2.jwt.JwtDecoder
实现(如NimbusJwtDecoder
)检查如exp
和iss
声明的内容以及令牌签名。Keycloak发布JWT访问令牌。配置了JWT解码器的资源服务器中的Spring安全性不需要反省JWT,它只读取它。
您可以使用https://jwt.io之类的工具打开JWT访问令牌,并研究它所包含的数据(并确定可以基于它设置哪些安全规则)。
PS
Keycloak security adapters are deprecated。不要使用它。请使用以下任一项:
spring-boot-starter-oauth2-resource-server
(需要相当多的java配置)spring-addons-webmvc-jwt-resource-server