来自文件的 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