Skip to content

Commit ea12611

Browse files
authored
lab tweak, one auth client, Fixes AB#3447250 (#2824)
Only need one auth client. Having a second one referencing BuildConfigs will cause issues if the build configs are not passed at library build time. https://identitydivision.visualstudio.com/Engineering/_build/results?buildId=1565324&view=results https://identitydivision.visualstudio.com/Engineering/_build/results?buildId=1565339&view=results [AB#3447250](https://identitydivision.visualstudio.com/fac9d424-53d2-45c0-91b5-ef6ba7a6bf26/_workitems/edit/3447250)
1 parent 62f8de0 commit ea12611

File tree

4 files changed

+26
-21
lines changed

4 files changed

+26
-21
lines changed

LabApiUtilities/src/main/com/microsoft/identity/labapi/utilities/authentication/LabApiAuthenticationClient.java

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -51,48 +51,47 @@ public class LabApiAuthenticationClient implements IAccessTokenSupplier {
5151
private final static int ATTEMPT_RETRY_WAIT = 3;
5252
private final String mLabCredential;
5353
private final String mLabCertPassword;
54-
private final String mScope;
54+
private final String defaultScope = LabConstants.DEFAULT_LAB_SCOPE;
5555
private final String mClientId;
5656

57-
5857
public LabApiAuthenticationClient(@NonNull final String labSecret) {
59-
this(labSecret, null, null, null);
58+
this(labSecret, null, null);
6059
}
6160

6261
public LabApiAuthenticationClient(@NonNull final String labSecret, final String labCertPassword) {
63-
this(labSecret, labCertPassword, null, null);
64-
}
65-
66-
public LabApiAuthenticationClient(@NonNull final String labSecret, @NonNull final String scope, @NonNull final String clientId) {
67-
this(labSecret, null, scope, clientId);
62+
this(labSecret, labCertPassword, null);
6863
}
6964

70-
public LabApiAuthenticationClient(@NonNull final String labSecret, final String labCertPassword, final String scope, final String clientId) {
65+
public LabApiAuthenticationClient(@NonNull final String labSecret, final String labCertPassword, final String clientId) {
7166
mLabCredential = labSecret;
7267
mLabCertPassword = labCertPassword;
73-
mScope = scope != null ? scope : LabConstants.DEFAULT_LAB_SCOPE;
7468
mClientId = clientId != null ? clientId : LabConstants.DEFAULT_LAB_CLIENT_ID;
7569
}
7670

7771
@Override
7872
public String getAccessToken() throws LabApiException {
79-
return getAccessToken(DEFAULT_ACCESS_TOKEN_RETRIES);
73+
return getAccessToken(DEFAULT_ACCESS_TOKEN_RETRIES, null);
74+
}
75+
76+
public String getAccessTokenForCustomScope(final String scope) throws LabApiException {
77+
return getAccessToken(DEFAULT_ACCESS_TOKEN_RETRIES, scope);
8078
}
8179

8280
/**
8381
* Attempt to acquire an access token. Accepts a parameter to denote number of retries
8482
* @param retries how many times to attempt acquire access token before returning a failure.
83+
* @param customScope the custom scope for which the access token is requested. If null, use the default scope.
8584
* @return an access token for Lab API
8685
* @throws LabApiException exception given back by Lab API
8786
*/
88-
public String getAccessToken(final int retries) throws LabApiException {
87+
public String getAccessToken(final int retries, final String customScope) throws LabApiException {
8988

9089
// Do this in a loop, if we get an exception or null result, try again
9190
for (int i = 1; i <= retries; i++) {
9291
System.out.printf(Locale.ENGLISH, "getAccessToken attempt #%d%n", i);
9392

9493
try {
95-
final String result = getAccessTokenInternal();
94+
final String result = getAccessTokenInternal(customScope);
9695
if (result != null) {
9796
return result;
9897
}
@@ -120,12 +119,19 @@ public String getAccessToken(final int retries) throws LabApiException {
120119
return null;
121120
}
122121

123-
private String getAccessTokenInternal() throws LabApiException {
122+
private String getAccessTokenInternal(final String customScope) throws LabApiException {
123+
final String authScope;
124+
if (customScope != null) {
125+
authScope = customScope;
126+
} else {
127+
authScope = defaultScope;
128+
}
129+
124130
final IConfidentialAuthClient confidentialAuthClient = new Msal4jAuthClient();
125131
final TokenParameters tokenParameters = TokenParameters.builder()
126132
.clientId(mClientId)
127133
.authority(AUTHORITY)
128-
.scope(mScope)
134+
.scope(authScope)
129135
.build();
130136

131137
final IAuthenticationResult authenticationResult;

LabApiUtilities/src/main/com/microsoft/identity/labapi/utilities/client/LabClient.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,6 @@
6161
public class LabClient implements ILabClient {
6262

6363
private final LabApiAuthenticationClient mLabApiAuthenticationClient;
64-
private final LabApiAuthenticationClient mLabApiAuthenticationClientForKeyVault = new LabApiAuthenticationClient(
65-
BuildConfig.LAB_CLIENT_SECRET, KEYVAULT_SCOPE, DEFAULT_LAB_CLIENT_ID
66-
);
6764
private final long PASSWORD_RESET_WAIT_DURATION = TimeUnit.SECONDS.toMillis(65);
6865
private final long LAB_API_RETRY_WAIT = TimeUnit.SECONDS.toMillis(5);
6966

@@ -308,7 +305,7 @@ public String getPasswordForGuestUser(LabGuestAccount guestUser) throws LabApiEx
308305
@Override
309306
public String getKeyVaultSecret(@NonNull final String secretName) throws LabApiException {
310307
Configuration.getKeyVaultApiClient().setAccessToken(
311-
mLabApiAuthenticationClientForKeyVault.getAccessToken()
308+
mLabApiAuthenticationClient.getAccessTokenForCustomScope(KEYVAULT_SCOPE)
312309
);
313310
final KeyVaultSecretsApi keyVaultSecretsApi = new KeyVaultSecretsApi();
314311

azure-pipelines/continuous-delivery/common-cd.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ variables:
1616
versionNumber: ${{ variables.customVersion }}
1717

1818
pool:
19-
name: Hosted Windows 2019 with VS2019
19+
name: MSSecurity-1ES-Build-Agents-Pool
20+
image: MSSecurity-1ES-Windows-2022
21+
os: windows
2022
jobs:
2123
# Key Vault
2224
- job: keyvault_phase

testutils/src/main/java/com/microsoft/identity/internal/testutils/labutils/ConfidentialClientHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ private String requestAccessTokenForAutomation()
7070

7171
private String requestAccessTokenForKeyVault()
7272
throws LabApiException {
73-
return (new LabApiAuthenticationClient(BuildConfig.LAB_CLIENT_SECRET, KEYVAULT_SCOPE, DEFAULT_LAB_CLIENT_ID)).getAccessToken();
73+
return (new LabApiAuthenticationClient(BuildConfig.LAB_CLIENT_SECRET)).getAccessTokenForCustomScope(KEYVAULT_SCOPE);
7474
}
7575

7676
void setupApiClientWithAccessToken() {

0 commit comments

Comments
 (0)