我正在尝试验证从 UI 获取的 spring-security 中的 okta 令牌。从 okta 网站我得到了以下配置来验证令牌
AccessTokenVerifier jwtVerifier = JwtVerifiers.accessTokenVerifierBuilder()
.setIssuer("https://${yourOktaDomain}/oauth2/default")
.setAudience("api://default") // defaults to 'api://default'
.setConnectionTimeout(Duration.ofSeconds(1)) // defaults to 1s
.setReadTimeout(Duration.ofSeconds(1)) // defaults to 1s
.build();
它也有效,但我无法从 spring-security 配置中调用上述内容,请帮助我编写 spring-security 配置来验证 spring security 中的 jwt 令牌
申请详情: Springboot2.5
Mycode:在 springsecurity 配置中(有错误并且不起作用)
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.headers()
.httpStrictTransportSecurity()
.includeSubDomains(true)
.maxAgeInSeconds(63072000);
httpSecurity.cors().and()
.csrf().disable()
.authorizeRequests()
.anyRequest()
//.permitAll()
.authenticated()
.and().oauth2ResourceServer() .jwt()
.jwtAuthenticationConverter(jwtAuthenticationConverter())
.validator(oktaAccessTokenValidator());
}
我要再次为我的首发做一些促销。
您应该看看使用此类额外启动器的优点和缺点。
如果您决定不使用它,您可以在优点和缺点部分列出的教程中找到自己编写conf的说明。
如果相反,你采用我的开胃菜,你所需要的只是:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
<dependency>
<groupId>com.c4-soft.springaddons</groupId>
<artifactId>spring-addons-starter-oidc</artifactId>
<version>7.1.5</version>
</dependency>
com:
c4-soft:
springaddons:
oidc:
ops:
- iss: https://${yourOktaDomain}/oauth2/default
# optional: adds an audience validator to JWT decoder
aud: api://default
authorities:
# you may add as many JSON path as you need to use as source for Spring authorities
# you may also apply basic transformation (prefix and case) if needed
- path: $.groups
resourceserver:
permit-all:
# what is listed here is accessible to anonymous
- "/public"
cors:
# Optional CORS configuration
- path: /**
allowed-origin-patterns: http://localhost:4200
@Configuration
@EnableMethodSecurity
public class SecurityConfig {
}
没有遗漏任何有关安全的内容。您甚至不需要提供令牌验证器、JWT 解码器、身份验证转换器、身份验证管理器或其他任何东西。最好的事情是它可以与任何其他 OpenID 提供商(Auth0、Keycloak、Amazon Cognito、spring-authorization-server 等)配合使用:您需要更改的只是用作权限源的私有声明的 JSON 路径.
如果您以后需要一个 OAuth2 客户端来代替或除了资源服务器之外,我的入门程序也进行了调整,并且属性的差异在 main README 中进行了解释。