我们在 Spring Boot 项目中使用 okta 进行身份验证。我们已经使用 java 应用程序成功完成了身份验证(参考 - https://developer.okta.com/blog/2017/03/21/spring-boot-oauth)
现在我要做的是将 okta clientId 和 secret 属性移动到 vault。
保险库的引导程序
spring.cloud.vault:
主机:localhost
端口: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:用作弹簧属性不起作用 我对弹簧 oAuth 使用相同的属性,但它失败了
okta.oauth2.clientId=${account.clientId}
okta.oauth2.issuer=${account.issuer}
异常日志
java.lang.IllegalArgumentException:无法解析值“${account.clientId}”中的占位符“account.clientId” account-web_1 | 在 org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:172) ~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE] account-web_1 | 在 org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124) ~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE] account-web_1 | 在 org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:237) ~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE] account-web_1 | 在 org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:211) ~[spring-core-5.0.5.
[更新]
所以调试spring代码我意识到问题只出在属性上
okta.oauth2.issuer
Github 也有同样的问题,但是 okta spring boot satarter 0.6.0 版本仍然存在问题。