【发布时间】:2018-12-10 14:40:03
【问题描述】:
我们在 Spring Boot 项目中使用 okta 进行身份验证。我们已经使用 java 应用程序成功完成了身份验证(参考 - https://developer.okta.com/blog/2017/03/21/spring-boot-oauth)
现在我要做的是将 okta clientId 和 secret 属性移动到 vault。
保险库的引导程序
spring.cloud.vault:
主机:本地主机
端口:8200
方案:http
令牌:00000000-0000-0000-0000-000000000000
现在请看下面2个应用属性案例
案例 1:使用 @Value 的属性有效
am.clientId=${account.clientId} am.issuer=${account.issuer}
用作
@Value("${am.clientId}") private String clientId;
@Value("${am.issuer}")
private String clientSecret;
案例2:用作弹簧属性不起作用 我对 spring oAuth 使用相同的属性,但它失败了
okta.oauth2.clientId=${account.clientId}
okta.oauth2.issuer=${account.issuer}
异常日志
java.lang.IllegalArgumentException:无法解析值“${account.clientId}”中的占位符“account.clientId” 帐户-web_1 |在 org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:172) ~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE] 帐户-web_1 |在 org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124) ~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE] 帐户-web_1 |在 org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:237) ~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE] 帐户-web_1 |在 org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:211) ~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]
[更新]
所以调试spring代码我意识到问题只是属性
okta.oauth2.issuer
Github 有一个 issue 相同,但 okta spring boot satarter 0.6.0 版本仍然存在问题。
【问题讨论】:
标签: java spring-boot okta spring-oauth2 spring-cloud-vault-config