Spring Security Sping Boot 中的安全访问令牌

1dkrff03  于 2023-10-20  发布在  Spring
关注(0)|答案(1)|浏览(176)

我正在尝试在spring-security中验证okta令牌,这是我从UI中获得的。从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 configuration调用上面的命令,请帮助我编写spring-security config来验证spring security中的jwt token
申请详情:Springboot2.5
Mycode:in springsecurity config(有错误,不工作)

@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());

    }
mgdq6dx1

mgdq6dx11#

我要再为my starter做些促销活动。
你应该看看使用这样一个额外的启动器的利弊。本节还包含了一些教程的链接,这些教程指导你自己编写conf(不需要我的启动器)。
用我的启动器,你只需要:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>

<dependency>
    <!-- this replaces the libs from Okta -->
    <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 {
}

没有关于安全的遗漏。您甚至不需要提供SecurityFilterChain、令牌验证器、JWT解码器、身份验证转换器、身份验证管理器等。最好的事情是它可以与任何其他OpenID提供商(Auth 0,Keycloak,Amazon Cognito,spring-authorization-server等)一起使用:所有你需要改变的将是JSON路径的私人索赔使用的权威来源。
如果您以后需要一个OAuth2客户机来代替您的资源服务器,或者除了您的资源服务器之外还需要一个OAuth2客户机,那么我的starter也会被修改,并且属性上的差异在主要的README中有解释。

相关问题