Expansion of Vault Azure MSI Configuration properties and bug fix.
fixes gh-1573
This commit is contained in:
committed by
Spencer Gibb
parent
bfa5db56eb
commit
fa39c01398
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user