// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. package com.microsoft.aad.msal4j; import java.util.Map; import java.util.Set; import static com.microsoft.aad.msal4j.ParameterValidationUtils.validateNotBlank; import static com.microsoft.aad.msal4j.ParameterValidationUtils.validateNotNull; /** * Object containing parameters for refresh token request. Can be used as parameter to * {@link PublicClientApplication#acquireToken(RefreshTokenParameters)} or to * {@link ConfidentialClientApplication#acquireToken(RefreshTokenParameters)} *

* RefreshTokenParameters should only be used for migration scenarios (when moving from ADAL to * MSAL). To acquire tokens silently, use {@link AbstractClientApplicationBase#acquireTokenSilently(SilentParameters)} */ public class RefreshTokenParameters implements IAcquireTokenParameters { private Set scopes; private String refreshToken; private ClaimsRequest claims; private Map extraHttpHeaders; private Map extraQueryParameters; private String tenant; private RefreshTokenParameters(Set scopes, String refreshToken, ClaimsRequest claims, Map extraHttpHeaders, Map extraQueryParameters, String tenant) { this.scopes = scopes; this.refreshToken = refreshToken; this.claims = claims; this.extraHttpHeaders = extraHttpHeaders; this.extraQueryParameters = extraQueryParameters; this.tenant = tenant; } private static RefreshTokenParametersBuilder builder() { return new RefreshTokenParametersBuilder(); } /** * Builder for {@link RefreshTokenParameters} * * @param scopes scopes application is requesting access to * @param refreshToken refresh token received form the STS * @return builder object that can be used to construct {@link RefreshTokenParameters} */ public static RefreshTokenParametersBuilder builder(Set scopes, String refreshToken) { validateNotBlank("refreshToken", refreshToken); return builder() .scopes(scopes) .refreshToken(refreshToken); } public Set scopes() { return this.scopes; } public String refreshToken() { return this.refreshToken; } public ClaimsRequest claims() { return this.claims; } public Map extraHttpHeaders() { return this.extraHttpHeaders; } public Map extraQueryParameters() { return this.extraQueryParameters; } public String tenant() { return this.tenant; } public static class RefreshTokenParametersBuilder { private Set scopes; private String refreshToken; private ClaimsRequest claims; private Map extraHttpHeaders; private Map extraQueryParameters; private String tenant; RefreshTokenParametersBuilder() { } /** * Scopes the application is requesting access to *

* Cannot be null. */ public RefreshTokenParametersBuilder scopes(Set scopes) { validateNotNull("scopes", scopes); this.scopes = scopes; return this; } /** * Refresh token received from the STS *

* Cannot be null. */ public RefreshTokenParametersBuilder refreshToken(String refreshToken) { validateNotNull("refreshToken", scopes); this.refreshToken = refreshToken; return this; } /** * Claims to be requested through the OIDC claims request parameter, allowing requests for standard and custom claims */ public RefreshTokenParametersBuilder claims(ClaimsRequest claims) { this.claims = claims; return this; } /** * Adds additional headers to the token request */ public RefreshTokenParametersBuilder extraHttpHeaders(Map extraHttpHeaders) { this.extraHttpHeaders = extraHttpHeaders; return this; } /** * Adds additional parameters to the token request */ public RefreshTokenParametersBuilder extraQueryParameters(Map extraQueryParameters) { this.extraQueryParameters = extraQueryParameters; return this; } /** * Overrides the tenant value in the authority URL for this request */ public RefreshTokenParametersBuilder tenant(String tenant) { this.tenant = tenant; return this; } public RefreshTokenParameters build() { return new RefreshTokenParameters(this.scopes, this.refreshToken, this.claims, this.extraHttpHeaders, this.extraQueryParameters, this.tenant); } public String toString() { return "RefreshTokenParameters.RefreshTokenParametersBuilder(scopes=" + this.scopes + ", refreshToken=" + this.refreshToken + ", claims=" + this.claims + ", extraHttpHeaders=" + this.extraHttpHeaders + ", extraQueryParameters=" + this.extraQueryParameters + ", tenant=" + this.tenant + ")"; } } }