From 6688149a1c0bf0e1d7f1d00240a2804b8b9ab8aa Mon Sep 17 00:00:00 2001 From: Neha Bhargava <61847233+neha-bhargava@users.noreply.github.com> Date: Wed, 9 Aug 2023 10:19:45 -0700 Subject: [PATCH] Update the MsalRequest object flow --- .../msal4j/AbstractManagedIdentitySource.java | 14 ++++++------- .../aad/msal4j/AppServiceManagedIdentity.java | 20 ++++++++----------- .../aad/msal4j/IMDSManagedIdentity.java | 19 ++++++++---------- .../aad/msal4j/ManagedIdentityClient.java | 8 ++++---- 4 files changed, 27 insertions(+), 34 deletions(-) diff --git a/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/AbstractManagedIdentitySource.java b/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/AbstractManagedIdentitySource.java index c1a6bd5a..5f3b8b48 100644 --- a/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/AbstractManagedIdentitySource.java +++ b/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/AbstractManagedIdentitySource.java @@ -23,7 +23,7 @@ abstract class AbstractManagedIdentitySource { private static final String MANAGED_IDENTITY_NO_RESPONSE_RECEIVED = "[Managed Identity] Authentication unavailable. No response received from the managed identity endpoint."; public static final String MANAGED_IDENTITY_REQUEST_FAILED = "managed_identity_request_failed"; - protected final RequestContext requestContext; + protected final ManagedIdentityRequest managedIdentityRequest; private ServiceBundle serviceBundle; private ManagedIdentitySourceType managedIdentitySourceType; @@ -37,9 +37,9 @@ abstract class AbstractManagedIdentitySource { @Setter private String managedIdentityUserAssignedResourceId; - public AbstractManagedIdentitySource(RequestContext requestContext, ServiceBundle serviceBundle, + public AbstractManagedIdentitySource(MsalRequest msalRequest, ServiceBundle serviceBundle, ManagedIdentitySourceType sourceType) { - this.requestContext = requestContext; + this.managedIdentityRequest = (ManagedIdentityRequest) msalRequest; this.managedIdentitySourceType = sourceType; this.serviceBundle = serviceBundle; } @@ -47,12 +47,12 @@ public AbstractManagedIdentitySource(RequestContext requestContext, ServiceBundl public ManagedIdentityResponse getManagedIdentityResponse( ManagedIdentityParameters parameters) { - ManagedIdentityRequest request = createManagedIdentityRequest(parameters.resource); + createManagedIdentityRequest(parameters.resource); IHttpResponse response; try { - HttpRequest httpRequest = new HttpRequest(HttpMethod.GET, request.computeURI().toString()); - response = HttpHelper.executeHttpRequest(httpRequest, requestContext, serviceBundle); + HttpRequest httpRequest = new HttpRequest(HttpMethod.GET, managedIdentityRequest.computeURI().toString()); + response = HttpHelper.executeHttpRequest(httpRequest, managedIdentityRequest.requestContext(), serviceBundle); } catch (URISyntaxException e) { throw new RuntimeException(e); } @@ -90,7 +90,7 @@ public ManagedIdentityResponse handleResponse( } } - public abstract ManagedIdentityRequest createManagedIdentityRequest(String resource); + public abstract void createManagedIdentityRequest(String resource); protected ManagedIdentityResponse getSuccessfulResponse(IHttpResponse response) { diff --git a/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/AppServiceManagedIdentity.java b/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/AppServiceManagedIdentity.java index 4babdd6b..8b286643 100644 --- a/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/AppServiceManagedIdentity.java +++ b/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/AppServiceManagedIdentity.java @@ -25,12 +25,10 @@ class AppServiceManagedIdentity extends AbstractManagedIdentitySource{ private static URI endpointUri; @Override - public ManagedIdentityRequest createManagedIdentityRequest(String resource) { - ManagedIdentityRequest request = new ManagedIdentityRequest(HttpMethod.GET, endpoint); - + public void createManagedIdentityRequest(String resource) { Map headers = new HashMap<>(); headers.put(SecretHeaderName, secret); - request.headers = headers; + managedIdentityRequest.headers = headers; Map queryParameters = new HashMap<>(); queryParameters.put("api-version", APP_SERVICE_MSI_API_VERSION ); @@ -48,26 +46,24 @@ public ManagedIdentityRequest createManagedIdentityRequest(String resource) { queryParameters.put(Constants.MANAGED_IDENTITY_RESOURCE_ID, getManagedIdentityUserAssignedResourceId()); } - request.queryParameters = queryParameters; - - return request; + managedIdentityRequest.queryParameters = queryParameters; } - private AppServiceManagedIdentity(RequestContext requestContext, ServiceBundle serviceBundle, URI endpoint, String secret) + private AppServiceManagedIdentity(MsalRequest msalRequest, ServiceBundle serviceBundle, URI endpoint, String secret) { - super(requestContext, serviceBundle, ManagedIdentitySourceType.AppService); + super(msalRequest, serviceBundle, ManagedIdentitySourceType.AppService); this.endpoint = endpoint; this.secret = secret; } - protected static AbstractManagedIdentitySource create(RequestContext requestContext, ServiceBundle serviceBundle) { + protected static AbstractManagedIdentitySource create(MsalRequest msalRequest, ServiceBundle serviceBundle) { - IEnvironmentVariables environmentVariables = getEnvironmentVariables((ManagedIdentityParameters) requestContext.apiParameters()); + IEnvironmentVariables environmentVariables = getEnvironmentVariables((ManagedIdentityParameters) msalRequest.requestContext().apiParameters()); String msiSecret = environmentVariables.getEnvironmentVariable(IEnvironmentVariables.IDENTITY_HEADER); String msiEndpoint = environmentVariables.getEnvironmentVariable(IEnvironmentVariables.IDENTITY_ENDPOINT); return validateEnvironmentVariables(msiEndpoint, msiSecret) - ? new AppServiceManagedIdentity(requestContext, serviceBundle, endpointUri, msiSecret) + ? new AppServiceManagedIdentity(msalRequest, serviceBundle, endpointUri, msiSecret) : null; } diff --git a/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/IMDSManagedIdentity.java b/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/IMDSManagedIdentity.java index 1b12f7c3..cfbd4ea9 100644 --- a/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/IMDSManagedIdentity.java +++ b/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/IMDSManagedIdentity.java @@ -35,11 +35,11 @@ public class IMDSManagedIdentity extends AbstractManagedIdentitySource{ private URI imdsEndpoint; - public IMDSManagedIdentity(RequestContext requestContext, + public IMDSManagedIdentity(MsalRequest msalRequest, ServiceBundle serviceBundle) { - super(requestContext, serviceBundle, ManagedIdentitySourceType.Imds); - ManagedIdentityParameters parameters = (ManagedIdentityParameters) requestContext.apiParameters(); - IEnvironmentVariables environmentVariables = ((ManagedIdentityParameters) requestContext.apiParameters()).environmentVariables == null ? + super(msalRequest, serviceBundle, ManagedIdentitySourceType.Imds); + ManagedIdentityParameters parameters = (ManagedIdentityParameters) msalRequest.requestContext().apiParameters(); + IEnvironmentVariables environmentVariables = ((ManagedIdentityParameters) msalRequest.requestContext().apiParameters()).environmentVariables == null ? new EnvironmentVariables() : parameters.environmentVariables; if (!StringHelper.isNullOrBlank(environmentVariables.getEnvironmentVariable(IEnvironmentVariables.AZURE_POD_IDENTITY_AUTHORITY_HOST))){ @@ -53,7 +53,7 @@ public IMDSManagedIdentity(RequestContext requestContext, StringBuilder builder = new StringBuilder(environmentVariables.getEnvironmentVariable(IEnvironmentVariables.AZURE_POD_IDENTITY_AUTHORITY_HOST)); builder.append("/" + imdsTokenPath); try { - URI imdsEndpoint = new URI(builder.toString()); + imdsEndpoint = new URI(builder.toString()); } catch (URISyntaxException e) { throw new RuntimeException(e); } @@ -68,12 +68,10 @@ public IMDSManagedIdentity(RequestContext requestContext, } @Override - public ManagedIdentityRequest createManagedIdentityRequest(String resource) { - ManagedIdentityRequest request = new ManagedIdentityRequest(HttpMethod.GET, imdsEndpoint); - + public void createManagedIdentityRequest(String resource) { Map headers = new HashMap<>(); headers.put("Metadata", "true"); - request.headers = headers; + managedIdentityRequest.headers = headers; Map queryParameters = new HashMap<>(); queryParameters.put("api-version",imdsApiVersion); @@ -93,8 +91,7 @@ public ManagedIdentityRequest createManagedIdentityRequest(String resource) { queryParameters.put(Constants.MANAGED_IDENTITY_RESOURCE_ID, resourceId); } - request.queryParameters = queryParameters; - return request; + managedIdentityRequest.queryParameters = queryParameters; } @Override diff --git a/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/ManagedIdentityClient.java b/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/ManagedIdentityClient.java index 295053a3..5bc8e717 100644 --- a/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/ManagedIdentityClient.java +++ b/msal4j-sdk/src/main/java/com/microsoft/aad/msal4j/ManagedIdentityClient.java @@ -11,7 +11,7 @@ class ManagedIdentityClient { private AbstractManagedIdentitySource managedIdentitySource; public ManagedIdentityClient(MsalRequest msalRequest, ServiceBundle serviceBundle) throws Exception { - managedIdentitySource = createManagedIdentitySource(msalRequest.requestContext(), serviceBundle); + managedIdentitySource = createManagedIdentitySource(msalRequest, serviceBundle); ManagedIdentityApplication managedIdentityApplication = (ManagedIdentityApplication) msalRequest.application(); ManagedIdentityIdType identityIdType = managedIdentityApplication.getManagedIdentityId().getIdType(); @@ -31,13 +31,13 @@ public ManagedIdentityResponse getManagedIdentityResponse(ManagedIdentityParamet } // This method tries to create managed identity source for different sources, if none is created then defaults to IMDS. - private static AbstractManagedIdentitySource createManagedIdentitySource(RequestContext requestContext, + private static AbstractManagedIdentitySource createManagedIdentitySource(MsalRequest msalRequest, ServiceBundle serviceBundle) throws Exception { AbstractManagedIdentitySource managedIdentitySource; - if ((managedIdentitySource = AppServiceManagedIdentity.create(requestContext, serviceBundle)) != null) { + if ((managedIdentitySource = AppServiceManagedIdentity.create(msalRequest, serviceBundle)) != null) { return managedIdentitySource; } else { - return new IMDSManagedIdentity(requestContext, serviceBundle); + return new IMDSManagedIdentity(msalRequest, serviceBundle); } } } \ No newline at end of file