Skip to content

Commit 6353bd7

Browse files
authored
Add domainHint support to authorization request, Fixes AB#3385486 (#2792)
[AB#3385486](https://identitydivision.visualstudio.com/Engineering/_workitems/edit/3385486) This PR adds the domainHint support to the authorization request. DomainHint is added the SDK to streamline developer experience for Social IdP/Custom OIDC scenarios with MSAL SDK. Today developer can use extraQueryParameters as an alternative which required developer to type in "domain_hint".
1 parent f911393 commit 6353bd7

File tree

5 files changed

+26
-0
lines changed

5 files changed

+26
-0
lines changed

changelog.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ vNext
55
- [MINOR] Add OTel Benchmarker (#2786)
66
- [MINOR] WebApps AccountId Registry (#2787)
77
- [MINOR] Take flight value for whether to show webcp flow in weview or not in brokerless scenarios. (#2784)
8+
- [MINOR] Add domainHint support to authorization request (#2792)
89

910
Version 23.0.2
1011
----------

common4j/src/main/com/microsoft/identity/common/java/commands/parameters/TokenCommandParameters.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ public class TokenCommandParameters extends CommandParameters {
6969

7070
private final String loginHint;
7171

72+
private final String domainHint;
73+
7274
private final List<Map.Entry<String, String>> extraOptions;
7375

7476
public Set<String> getScopes() {

common4j/src/main/com/microsoft/identity/common/java/controllers/BaseController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ private void setBuilderProperties(@SuppressWarnings(WarningType.rawtype_warning)
366366
final MicrosoftStsAuthorizationRequest.Builder msBuilder = (MicrosoftStsAuthorizationRequest.Builder) builder;
367367
msBuilder
368368
.setLoginHint(interactiveTokenCommandParameters.getLoginHint())
369+
.setDomainHint(interactiveTokenCommandParameters.getDomainHint())
369370
.setPrompt(interactiveTokenCommandParameters.getPrompt().toString())
370371
.setPreferredAuthMethod(interactiveTokenCommandParameters.getPreferredAuthMethod());
371372
final String installedCompanyPortalVersion =

common4j/src/main/com/microsoft/identity/common/java/providers/microsoft/MicrosoftAuthorizationRequest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,14 @@ public abstract class MicrosoftAuthorizationRequest<T extends MicrosoftAuthoriza
7575
@SerializedName("login_hint")
7676
private final String mLoginHint;
7777

78+
/**
79+
* Provides a hint about the tenant or domain that the user should use to sign in.
80+
*/
81+
@Getter
82+
@Accessors(prefix = "m")
83+
@SerializedName("domain_hint")
84+
private final String mDomainHint;
85+
7886
/**
7987
* Correlation ID.
8088
*/
@@ -168,6 +176,7 @@ protected MicrosoftAuthorizationRequest(@SuppressWarnings(WarningType.rawtype_wa
168176
super(builder);
169177
mAuthority = builder.mAuthority;
170178
mLoginHint = builder.mLoginHint;
179+
mDomainHint = builder.mDomainHint;
171180
mCorrelationId = builder.mCorrelationId;
172181

173182
final PkceChallenge challenge = builder.mPkceChallenge == null ?
@@ -217,6 +226,7 @@ public abstract static class Builder<B extends MicrosoftAuthorizationRequest.Bui
217226
private Boolean mMultipleCloudAware;
218227
private UUID mCorrelationId;
219228
private String mLoginHint;
229+
private String mDomainHint;
220230
private PkceChallenge mPkceChallenge;
221231
private PreferredAuthMethod mPreferredAuthMethod;
222232

@@ -254,6 +264,11 @@ public B setLoginHint(String loginHint) {
254264
return self();
255265
}
256266

267+
public B setDomainHint(String domainHint) {
268+
mDomainHint = domainHint;
269+
return self();
270+
}
271+
257272
public B setPreferredAuthMethod(@Nullable final PreferredAuthMethod preferredAuthMethod) {
258273
mPreferredAuthMethod = preferredAuthMethod;
259274
return self();

common4j/src/test/com/microsoft/identity/common/java/providers/microsoft/MicrosoftAuthorizationRequestTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public void tearDown() {
6060
public static final boolean MOCK_MULTIPLE_CLOUD_AWARE = true;
6161
public static final UUID MOCK_CORRELATION_ID = UUID.randomUUID();
6262
public static final String MOCK_LOGIN_HINT = "MOCK_LOGIN_HINT";
63+
public static final String MOCK_DOMAIN_HINT = "MOCK_DOMAIN_HINT";
6364

6465
// Check that we're not sending anything unexpected to the server side
6566
// by comparing the resulted URL by-character.
@@ -74,13 +75,15 @@ public void testCreateUriFromAuthorizationRequest() throws MalformedURLException
7475
.setMultipleCloudAware(MOCK_MULTIPLE_CLOUD_AWARE)
7576
.setCorrelationId(MOCK_CORRELATION_ID)
7677
.setLoginHint(MOCK_LOGIN_HINT)
78+
.setDomainHint(MOCK_DOMAIN_HINT)
7779
.setPkceChallenge(MOCK_PKCE_CHALLENGE)
7880
.setState(MOCK_STATE)
7981
.build();
8082

8183
if (CommonFlightsManager.INSTANCE.getFlightsProvider().isFlightEnabled(CommonFlight.ENABLE_AM_API_WORKPROFILE_EXTRA_QUERY_PARAMETERS)) {
8284
Assert.assertEquals(MockAuthorizationRequest.MOCK_AUTH_ENDPOINT +
8385
"?login_hint=" + MOCK_LOGIN_HINT +
86+
"&domain_hint=" + MOCK_DOMAIN_HINT +
8487
"&client-request-id=" + MOCK_CORRELATION_ID +
8588
"&code_challenge=" + MOCK_PKCE_CHALLENGE.getCodeChallenge() +
8689
"&code_challenge_method=" + MOCK_PKCE_CHALLENGE.getCodeChallengeMethod() +
@@ -100,6 +103,7 @@ public void testCreateUriFromAuthorizationRequest() throws MalformedURLException
100103
} else {
101104
Assert.assertEquals(MockAuthorizationRequest.MOCK_AUTH_ENDPOINT +
102105
"?login_hint=" + MOCK_LOGIN_HINT +
106+
"&domain_hint=" + MOCK_DOMAIN_HINT +
103107
"&client-request-id=" + MOCK_CORRELATION_ID +
104108
"&code_challenge=" + MOCK_PKCE_CHALLENGE.getCodeChallenge() +
105109
"&code_challenge_method=" + MOCK_PKCE_CHALLENGE.getCodeChallengeMethod() +
@@ -129,13 +133,15 @@ public void testCreateUriFromAuthorizationRequestWithWPAvailable() throws Malfor
129133
.setMultipleCloudAware(MOCK_MULTIPLE_CLOUD_AWARE)
130134
.setCorrelationId(MOCK_CORRELATION_ID)
131135
.setLoginHint(MOCK_LOGIN_HINT)
136+
.setDomainHint(MOCK_DOMAIN_HINT)
132137
.setPkceChallenge(MOCK_PKCE_CHALLENGE)
133138
.setState(MOCK_STATE)
134139
.build();
135140

136141
if (CommonFlightsManager.INSTANCE.getFlightsProvider().isFlightEnabled(CommonFlight.ENABLE_AM_API_WORKPROFILE_EXTRA_QUERY_PARAMETERS)) {
137142
Assert.assertEquals(MockAuthorizationRequest.MOCK_AUTH_ENDPOINT +
138143
"?login_hint=" + MOCK_LOGIN_HINT +
144+
"&domain_hint=" + MOCK_DOMAIN_HINT +
139145
"&client-request-id=" + MOCK_CORRELATION_ID +
140146
"&code_challenge=" + MOCK_PKCE_CHALLENGE.getCodeChallenge() +
141147
"&code_challenge_method=" + MOCK_PKCE_CHALLENGE.getCodeChallengeMethod() +
@@ -155,6 +161,7 @@ public void testCreateUriFromAuthorizationRequestWithWPAvailable() throws Malfor
155161
} else {
156162
Assert.assertEquals(MockAuthorizationRequest.MOCK_AUTH_ENDPOINT +
157163
"?login_hint=" + MOCK_LOGIN_HINT +
164+
"&domain_hint=" + MOCK_DOMAIN_HINT +
158165
"&client-request-id=" + MOCK_CORRELATION_ID +
159166
"&code_challenge=" + MOCK_PKCE_CHALLENGE.getCodeChallenge() +
160167
"&code_challenge_method=" + MOCK_PKCE_CHALLENGE.getCodeChallengeMethod() +

0 commit comments

Comments
 (0)