簡體   English   中英

使用Spring Cloud Vault的Spring Okta OAuth2屬性

[英]Spring okta oauth2 properties using spring cloud vault

我們在Spring啟動項目中使用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

現在請看以下兩種情況下的應用程序屬性

情況1:使用@Value的屬性有效

am.clientId = $ {account.clientId} am.issuer = $ {account.issuer}

用作

 @Value("${am.clientId}") private String clientId; 
@Value("${am.issuer}")
private String clientSecret;

情況2:用作spring屬性不起作用我對spring oAuth使用相同的屬性,但失敗

okta.oauth2.clientId = $ {} account.clientId

okta.oauth2.issuer = $ {} account.issuer

異常記錄

java.lang.IllegalArgumentException:無法解析值“ $ {account.clientId}”中的占位符“ account.clientId”。 在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.RELEASE.jar!/:5.0.5.RELEASE]

[更新]

因此,調試spring代碼后,我意識到問題僅在於屬性

okta.oauth2.issuer

Github對此有一個問題 ,但是okta spring boot satarter 0.6.0版本仍然有問題。

您是否嘗試過在雲配置提供程序中設置okta.oauth2.*屬性? 我通常使用文件存儲庫測試Cloud Config,但是從客戶端的角度來看,它應該是相同的。 (我知道這並不能完全回答您的問題,而只是想確保在繼續操作之前可以奏效)

因此,我對此有一種解決方案。 創建了一個bean“ oktaOAuth2Properties”以覆蓋Spring Boot默認bean,並使用@Value批注從Vault中獲取值。 代碼如下所示。 這對我有用

@Value(“ $ {okta.clientId}”)私有字符串clientId;

@Value("${okta.issuer}")
private String issuer;

@Bean
public OktaOAuth2Properties oktaOAuth2Properties() {
    OktaOAuth2Properties properties = new OktaOAuth2Properties();
    properties.setClientId(clientId);
    properties.setIssuer(issuer);
    return properties;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM