来自文件的 Spring Boot http 安全 jwt 密钥

Posted

技术标签:

【中文标题】来自文件的 Spring Boot http 安全 jwt 密钥【英文标题】:Spring boot http security jwt key from file 【发布时间】:2018-07-02 14:47:01 【问题描述】:

目前我正在使用以下配置进行身份验证,为 jwt 添加密钥,在每个请求上解密授权令牌:

security:
   oauth2:
      resource:
         jwt:
            keyValue: test

以下是 http 安全配置,使用它只允许特定的端点

@Configuration
@EnableResourceServer
@ConditionalOnProperty(name = "securityEnabled")
public class ResourceServiceConfiguration extends ResourceServerConfigurerAdapter 

@Override
public void configure(HttpSecurity httpSecurity) throws Exception      
    httpSecurity
        // we don't need CSRF because our token is invulnerable
        .csrf().disable()

        // don't create session
        .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()

        .authorizeRequests()

        // allow anonymous requests to root
        .antMatchers( HttpMethod.GET, "/" ).permitAll()
        .anyRequest().hasAuthority("admin");


我想要做的是,不是从 application.yml 中获取这个键值,而是在服务启动期间以某种方式添加这个键值,从文件系统中获取它并让资源服务器配置处理其余部分为了我。无休止的谷歌搜索让我无处可去,虽然我最好的猜测是自动装配身份验证管理器并覆盖该方法,但我认为这不适用于 spring 的 http 安全性。

任何帮助都会很棒,谢谢。

【问题讨论】:

【参考方案1】:

在我看来,您会想要执行Externalized Configuration 中详细说明的操作。

例如有一个像yourfile.properties 这样的文件,包含

security.oauth2.resource.jwt.key-value=yourkey

然后使用--spring.config.location=yourfile.properties 参数启动您的应用程序。

【讨论】:

以上是关于来自文件的 Spring Boot http 安全 jwt 密钥的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot + 安全 + 多 HTTP Web 配置

Spring Boot 安全性中的 HTTP 403 禁止错误

Angular 6 + Spring Boot:错误:“来自原点 'http://localhost:4200' 已被 CORS 策略阻止”

在 Spring Boot 中使用 jwt 令牌的具有 http 安全性的 CrossOrigin

在aws上忽略基于url到spring boot 2应用程序的黑客攻击是不是安全?

使用spring boot(安全)和keycloak启用角色身份验证?