2222// THE SOFTWARE.
2323package com .microsoft .identity .labapi .utilities .client ;
2424
25+ import static com .microsoft .identity .labapi .utilities .constants .LabConstants .DEFAULT_LAB_CLIENT_ID ;
26+ import static com .microsoft .identity .labapi .utilities .constants .LabConstants .KEYVAULT_SCOPE ;
27+
2528import com .microsoft .identity .internal .test .labapi .ApiException ;
2629import com .microsoft .identity .internal .test .labapi .Configuration ;
2730import com .microsoft .identity .internal .test .labapi .api .ConfigApi ;
2831import com .microsoft .identity .internal .test .labapi .api .CreateTempUserApi ;
2932import com .microsoft .identity .internal .test .labapi .api .DeleteDeviceApi ;
3033import com .microsoft .identity .internal .test .labapi .api .DisablePolicyApi ;
3134import com .microsoft .identity .internal .test .labapi .api .EnablePolicyApi ;
32- import com .microsoft .identity .internal .test .labapi .api .LabSecretApi ;
35+ import com .microsoft .identity .internal .test .labapi .api .KeyVaultSecretsApi ;
3336import com .microsoft .identity .internal .test .labapi .api .ResetApi ;
3437import com .microsoft .identity .internal .test .labapi .model .ConfigInfo ;
3538import com .microsoft .identity .internal .test .labapi .model .CustomSuccessResponse ;
36- import com .microsoft .identity .internal .test .labapi .model .SecretResponse ;
39+ import com .microsoft .identity .internal .test .labapi .model .SecretBundle ;
3740import com .microsoft .identity .internal .test .labapi .model .TempUser ;
3841import com .microsoft .identity .internal .test .labapi .model .UserInfo ;
42+ import com .microsoft .identity .labapi .utilities .BuildConfig ;
3943import com .microsoft .identity .labapi .utilities .authentication .LabApiAuthenticationClient ;
4044import com .microsoft .identity .labapi .utilities .constants .ProtectionPolicy ;
4145import com .microsoft .identity .labapi .utilities .constants .TempUserType ;
5761public class LabClient implements ILabClient {
5862
5963 private final LabApiAuthenticationClient mLabApiAuthenticationClient ;
64+ private final LabApiAuthenticationClient mLabApiAuthenticationClientForKeyVault = new LabApiAuthenticationClient (
65+ BuildConfig .LAB_CLIENT_SECRET , KEYVAULT_SCOPE , DEFAULT_LAB_CLIENT_ID
66+ );
6067 private final long PASSWORD_RESET_WAIT_DURATION = TimeUnit .SECONDS .toMillis (65 );
6168 private final long LAB_API_RETRY_WAIT = TimeUnit .SECONDS .toMillis (5 );
6269
@@ -145,7 +152,7 @@ private ILabAccount getLabAccountObject(@NonNull final ConfigInfo configInfo) th
145152 }
146153
147154 private List <ConfigInfo > fetchConfigsFromLab (@ NonNull final String upn ) throws LabApiException {
148- Configuration .getDefaultApiClient ().setAccessToken (
155+ Configuration .getLabUserFetchApiClient ().setAccessToken (
149156 mLabApiAuthenticationClient .getAccessToken ()
150157 );
151158 try {
@@ -157,7 +164,7 @@ private List<ConfigInfo> fetchConfigsFromLab(@NonNull final String upn) throws L
157164 }
158165
159166 public List <ConfigInfo > fetchConfigsFromLab (@ NonNull final LabQuery query ) throws LabApiException {
160- Configuration .getDefaultApiClient ().setAccessToken (
167+ Configuration .getLabUserFetchApiClient ().setAccessToken (
161168 mLabApiAuthenticationClient .getAccessToken ()
162169 );
163170 try {
@@ -222,7 +229,10 @@ private ILabAccount createTempAccountInternal(@NonNull final TempUserType tempUs
222229 mLabApiAuthenticationClient .getAccessToken ()
223230 );
224231
225- final CreateTempUserApi createTempUserApi = new CreateTempUserApi ();
232+ final String createTempUserFunctionCode = getKeyVaultSecret (
233+ CreateTempUserApi .AZURE_FUNCTION_CODE_SECRET_NAME
234+ );
235+ final CreateTempUserApi createTempUserApi = new CreateTempUserApi (createTempUserFunctionCode );
226236 createTempUserApi .getApiClient ().setReadTimeout (TEMP_USER_API_READ_TIMEOUT );
227237 final TempUser tempUser ;
228238
@@ -279,7 +289,7 @@ public String getPasswordForGuestUser(LabGuestAccount guestUser) throws LabApiEx
279289
280290 // Adding a second attempt here, api sometimes fails to get the lab secret.
281291 try {
282- return getSecret (labName );
292+ return getKeyVaultSecret (labName );
283293 } catch (final LabApiException e ){
284294 if (e .getErrorCode ().equals (LabError .FAILED_TO_GET_SECRET_FROM_LAB )){
285295
@@ -291,23 +301,23 @@ public String getPasswordForGuestUser(LabGuestAccount guestUser) throws LabApiEx
291301 }
292302
293303 // Try to get the secret again
294- return getSecret (labName );
304+ return getKeyVaultSecret (labName );
295305 } else {
296306 throw e ;
297307 }
298308 }
299309 }
300310
301311 @ Override
302- public String getSecret (@ NonNull final String secretName ) throws LabApiException {
303- Configuration .getDefaultApiClient ().setAccessToken (
304- mLabApiAuthenticationClient .getAccessToken ()
312+ public String getKeyVaultSecret (@ NonNull final String secretName ) throws LabApiException {
313+ Configuration .getKeyVaultApiClient ().setAccessToken (
314+ mLabApiAuthenticationClientForKeyVault .getAccessToken ()
305315 );
306- final LabSecretApi labSecretApi = new LabSecretApi ();
316+ final KeyVaultSecretsApi keyVaultSecretsApi = new KeyVaultSecretsApi ();
307317
308318 try {
309- final SecretResponse secretResponse = labSecretApi . apiLabSecretGet (secretName );
310- return secretResponse .getValue ();
319+ final SecretBundle secretBundle = keyVaultSecretsApi . getKeyVaultSecret (secretName );
320+ return secretBundle .getValue ();
311321 } catch (final com .microsoft .identity .internal .test .labapi .ApiException ex ) {
312322 throw new LabApiException (LabError .FAILED_TO_GET_SECRET_FROM_LAB , ex );
313323 }
@@ -320,7 +330,10 @@ public boolean deleteDevice(@NonNull final String upn,
320330 mLabApiAuthenticationClient .getAccessToken ()
321331 );
322332
323- final DeleteDeviceApi deleteDeviceApi = new DeleteDeviceApi ();
333+ final String deleteDeviceFunctionCode = getKeyVaultSecret (
334+ DeleteDeviceApi .AZURE_FUNCTION_CODE_SECRET_NAME
335+ );
336+ final DeleteDeviceApi deleteDeviceApi = new DeleteDeviceApi (deleteDeviceFunctionCode );
324337
325338 try {
326339 final CustomSuccessResponse successResponse = deleteDeviceApi .apiDeleteDeviceDelete (
@@ -400,10 +413,9 @@ private String getPassword(@NonNull final TempUser tempUser) throws LabApiExcept
400413 private String getPassword (final String credentialVaultKeyName ) throws LabApiException {
401414 final String secretName = getLabSecretName (credentialVaultKeyName );
402415
403- // Adding a second attempt here, api sometimes fails to get the lab secret.
404416 try {
405- return getSecret (secretName );
406- } catch (final LabApiException e ){
417+ return getKeyVaultSecret (secretName );
418+ } catch (final LabApiException e ) {
407419 if (e .getErrorCode ().equals (LabError .FAILED_TO_GET_SECRET_FROM_LAB )){
408420
409421 // Wait for a bit
@@ -414,7 +426,7 @@ private String getPassword(final String credentialVaultKeyName) throws LabApiExc
414426 }
415427
416428 // Try to get the secret again
417- return getSecret (secretName );
429+ return getKeyVaultSecret (secretName );
418430 } else {
419431 throw e ;
420432 }
@@ -423,7 +435,10 @@ private String getPassword(final String credentialVaultKeyName) throws LabApiExc
423435
424436 @ Override
425437 public boolean resetPassword (@ NonNull final String upn ) throws LabApiException {
426- final ResetApi resetApi = new ResetApi ();
438+ final String resetApiFunctionCode = getKeyVaultSecret (
439+ ResetApi .AZURE_FUNCTION_CODE_SECRET_NAME
440+ );
441+ final ResetApi resetApi = new ResetApi (resetApiFunctionCode );
427442 try {
428443 final CustomSuccessResponse resetResponse = resetApi .apiResetPut (upn , ResetOperation .PASSWORD .toString ());
429444 if (resetResponse == null ) {
@@ -494,7 +509,13 @@ private String getLabSecretName(final String credentialVaultKeyName) {
494509 * @return boolean value indicating policy enabled or not.
495510 */
496511 public boolean enablePolicy (@ NonNull final String upn , @ NonNull final ProtectionPolicy policy ) throws LabApiException {
497- final EnablePolicyApi enablePolicyApi = new EnablePolicyApi ();
512+ Configuration .getDefaultApiClient ().setAccessToken (
513+ mLabApiAuthenticationClient .getAccessToken ()
514+ );
515+ final String enablePolicyFunctionCode = getKeyVaultSecret (
516+ EnablePolicyApi .AZURE_FUNCTION_CODE_SECRET_NAME
517+ );
518+ final EnablePolicyApi enablePolicyApi = new EnablePolicyApi (enablePolicyFunctionCode );
498519 try {
499520 final CustomSuccessResponse enablePolicyResult = enablePolicyApi .apiEnablePolicyPut (upn , policy .toString ());
500521 final String expectedResult = (policy + " Enabled for user : " + upn ).toLowerCase ();
@@ -516,7 +537,10 @@ public boolean enablePolicy(@NonNull final String upn, @NonNull final Protection
516537 * @return boolean value indicating policy is disabled or not for the upn.
517538 */
518539 public boolean disablePolicy (@ NonNull final String upn , @ NonNull final ProtectionPolicy policy ) throws LabApiException {
519- final DisablePolicyApi disablePolicyApi = new DisablePolicyApi ();
540+ final String disablePolicyFunctionCode = getKeyVaultSecret (
541+ DisablePolicyApi .AZURE_FUNCTION_CODE_SECRET_NAME
542+ );
543+ final DisablePolicyApi disablePolicyApi = new DisablePolicyApi (disablePolicyFunctionCode );
520544 try {
521545 final CustomSuccessResponse disablePolicyResponse = disablePolicyApi .apiDisablePolicyPut (upn , policy .toString ());
522546 final String expectedResult = (policy + " Disabled for user : " + upn ).toLowerCase ();
0 commit comments