Expansion of Vault Azure MSI Configuration properties and bug fix.

fixes gh-1573
This commit is contained in:
justin.bertrand
2020-03-11 09:43:04 -04:00
committed by Spencer Gibb
parent bfa5db56eb
commit fa39c01398
3 changed files with 53 additions and 1 deletions

View File

@@ -525,10 +525,28 @@ public class VaultEnvironmentProperties implements HttpEnvironmentRepositoryProp
*/
private String role = "";
/**
* URI to the Azure MSI Identity Service.
*/
private String identityTokenService = "";
/**
* URI to the Azure MSI Metadata Service.
*/
private String metadataService = "";
public String getAzurePath() {
return this.azurePath;
}
public String getIdentityTokenService() {
return identityTokenService;
}
public String getMetadataService() {
return metadataService;
}
public String getRole() {
return this.role;
}
@@ -537,6 +555,14 @@ public class VaultEnvironmentProperties implements HttpEnvironmentRepositoryProp
this.azurePath = azurePath;
}
public void setIdentityTokenService(String identityTokenService) {
this.identityTokenService = identityTokenService;
}
public void setMetadataService(String metadataService) {
this.metadataService = metadataService;
}
public void setRole(String role) {
this.role = role;
}

View File

@@ -16,6 +16,8 @@
package org.springframework.cloud.config.server.environment.vault.authentication;
import java.net.URI;
import org.springframework.cloud.config.server.environment.VaultEnvironmentProperties;
import org.springframework.cloud.config.server.environment.VaultEnvironmentProperties.AuthenticationMethod;
import org.springframework.cloud.config.server.environment.vault.SpringVaultClientAuthenticationProvider;
@@ -44,10 +46,22 @@ public class AzureMsiClientAuthenticationProvider
AuthenticationMethod.AZURE_MSI));
AzureMsiAuthenticationOptions options = AzureMsiAuthenticationOptions.builder()
.role(azureMsi.getRole()).build();
.role(azureMsi.getRole()).path(azureMsi.getAzurePath())
.instanceMetadataUri(getUri(azureMsi.getMetadataService(),
AzureMsiAuthenticationOptions.DEFAULT_INSTANCE_METADATA_SERVICE_URI))
.identityTokenServiceUri(getUri(azureMsi.getIdentityTokenService(),
AzureMsiAuthenticationOptions.DEFAULT_IDENTITY_TOKEN_SERVICE_URI))
.build();
return new AzureMsiAuthentication(options, vaultRestOperations,
externalRestOperations);
}
private URI getUri(String uriString, URI defaultUri) {
if (uriString == null || uriString.isEmpty()) {
return defaultUri;
}
return URI.create(uriString);
}
}

View File

@@ -50,11 +50,13 @@ import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.mock.http.client.MockClientHttpRequest;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.util.ClassUtils;
import org.springframework.vault.authentication.AppRoleAuthentication;
import org.springframework.vault.authentication.AwsEc2Authentication;
import org.springframework.vault.authentication.AwsIamAuthentication;
import org.springframework.vault.authentication.AzureMsiAuthentication;
import org.springframework.vault.authentication.AzureMsiAuthenticationOptions;
import org.springframework.vault.authentication.ClientAuthentication;
import org.springframework.vault.authentication.ClientCertificateAuthentication;
import org.springframework.vault.authentication.CubbyholeAuthentication;
@@ -81,6 +83,8 @@ import static org.springframework.cloud.config.server.environment.VaultEnvironme
import static org.springframework.cloud.config.server.environment.VaultEnvironmentProperties.AuthenticationMethod.KUBERNETES;
import static org.springframework.cloud.config.server.environment.VaultEnvironmentProperties.AuthenticationMethod.PCF;
import static org.springframework.cloud.config.server.environment.VaultEnvironmentProperties.AuthenticationMethod.TOKEN;
import static org.springframework.vault.authentication.AzureMsiAuthenticationOptions.DEFAULT_IDENTITY_TOKEN_SERVICE_URI;
import static org.springframework.vault.authentication.AzureMsiAuthenticationOptions.DEFAULT_INSTANCE_METADATA_SERVICE_URI;
class SpringVaultClientConfigurationTests {
@@ -145,6 +149,14 @@ class SpringVaultClientConfigurationTests {
properties.getAzureMsi().setAzurePath("azure-msi");
assertClientAuthenticationOfType(properties, AzureMsiAuthentication.class);
AzureMsiAuthentication clientAuthentication = (AzureMsiAuthentication) getConfiguration(properties)
.clientAuthentication();
AzureMsiAuthenticationOptions options = (AzureMsiAuthenticationOptions) ReflectionTestUtils
.getField(clientAuthentication, "options");
assertThat(options.getIdentityTokenServiceUri()).isEqualTo(DEFAULT_IDENTITY_TOKEN_SERVICE_URI);
assertThat(options.getInstanceMetadataServiceUri()).isEqualTo(DEFAULT_INSTANCE_METADATA_SERVICE_URI);
}
@Test