我正在尝试验证一个来自springboot的JWT令牌,这个令牌是由我的一个自定义apigee代理生成的。我想知道我是否可以使用springsecurity并使用Apigee作为授权服务器来验证JWT?
这是我的Web安全配置
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.oauth2ResourceServer()
.jwt();
}
spring.security.oauth2.resourceserver.jwt.issuer-uri={apigee_endpoint}
日志上说
服务器初始化异常:无法延迟解析位于org.springframework.security.oauth2.jwt.SupplierJwtDecoder.wrapException(供应商JwtDecoder.java:58)的提供的JwtDecoder示例~位于org.springframework.security.oauth2.jwt.SupplierJwtDecoder.decode(供应商JwtDecoder.java:49)的[spring-security-oauth2-jose-5.6.3.jar:5.6.3 ]~位于org.springframework.security.oauth2.server.resource.authentication.JwtProvision.getJwt(JwtAuthenticationAuthenticider.java:97)的[spring-security-oauth2-jose-5.6.3.jar:5.6.3 ]~[ spring-security-oauth2-资源服务器-5.6.3.jar:5.6
原因:java. lang.非法参数异常:无法解析具有提供的颁发者"{颁发者URL}"的配置,颁发者位于org.springframework.security.oauth2.jwt.JwtDecoderProviderConfigurationUtils.getConfiguration(JwtDecoderProviderConfigurationUtils.java:166)~[ spring-security-oauth2-jose-5.6.3.jar:5.6.3]位于org.springframework.security.oauth2.jwt.JwtDecoderProviderConfigurationUtils.getConfigurationForIssuerLocation(JwtDecoderProviderConfigurationUtils.java:79)~[ spring-security-oauth2-jose-5.6.3.jar:5.6.3]位于org.springframework.security.oauth2.jwt.JwtDecoders.从颁发者位置(JwtDecoders. java:93)~[ spring-security-oauth2
1条答案
按热度按时间1cosmwyk1#
当我们使用两个不同版本的keycloak时,我遇到了这个问题。一个版本的路径是${security-provider-host-port}/auth/realms/${security-provider-realm},另一个版本的路径是${security-provider-host-port}/realms/${security-provider-realm}。因此,请检查您的spring.security.oauth2.resourceserver.jwt.issuer-uri路径