【发布时间】:2020-12-09 12:30:52
【问题描述】:
我正在使用 AzureKeyVault 存储秘密并在我的应用程序中检索它们。我正在使用带有最新版本的 azure-identity 和 azure-security-keyvault-secrets 库的 Spring Boot。这是完成这项工作的代码:
private SecretClient createDefaultAzureCredential() {
DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
.build();
return new SecretClientBuilder()
.vaultUrl(keyVaultUri)
.credential(defaultCredential)
.buildClient();
}
@Cacheable
public String getSecret(String secretKey) {
KeyVaultSecret secret = createDefaultAzureCredential().getSecret(secretKey);
return secret.getValue();
}
我使用 Azure CLI 进行了身份验证,一切正常。我可以得到我的秘密。
因为DefaultAzureCredential 正在使用以下尝试身份验证的顺序:https://i.stack.imgur.com/Y80vq.png,
我的日志充满了以下类型的异常:
com.azure.identity.CredentialUnavailableException: EnvironmentCredential authentication unavailable. Environment variables are not fully configured.
at com.azure.identity.EnvironmentCredential.getToken(EnvironmentCredential.java:123)
at com.azure.identity.ChainedTokenCredential.lambda$getToken$2(ChainedTokenCredential.java:55)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:378)
at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:267)
---logs trimmed----
对于日志记录,我使用的是 logback。
有没有一种方法可以删除因身份验证尝试失败而导致的日志?我知道我可以禁用使用 logback 抛出它们的类的日志,但我不想这样做,因为我担心我会丢失可以在调试时使用的如此重要的日志。
【问题讨论】:
标签: azure spring-boot logback azure-keyvault azure-cli