Skip to content

Commit d6e9f3b

Browse files
authored
token based lab api access (#148)
* token based lab api access
1 parent 1f63662 commit d6e9f3b

File tree

5 files changed

+50
-14
lines changed

5 files changed

+50
-14
lines changed

src/integrationtest/java/com.microsoft.aad.msal4j/TestConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
public class TestConstants {
99
public final static String KEYVAULT_DEFAULT_SCOPE = "https://vault.azure.net/.default";
10+
public final static String MSIDLAB_DEFAULT_SCOPE = "https://msidlab.com/.default";
1011
public final static String GRAPH_DEFAULT_SCOPE = "https://graph.windows.net/.default";
1112
public final static String USER_READ_SCOPE = "user.read";
1213
public final static String B2C_LAB_SCOPE = "https://msidlabb2c.onmicrosoft.com/msaapp/user_impersonation";

src/integrationtest/java/labapi/AppIdentityProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ public AppIdentityProvider(){
1313
}
1414

1515
public String getDefaultLabId(){
16-
return keyVaultSecretsProvider.getSecret(LabConstants.APP_ID_URL);
16+
return keyVaultSecretsProvider.getSecret(LabConstants.APP_ID_KEY_VAULT_SECRET);
1717
}
1818

1919
public String getDefaultLabPassword(){
20-
return keyVaultSecretsProvider.getSecret(LabConstants.APP_PASSWORD_URL);
20+
return keyVaultSecretsProvider.getSecret(LabConstants.APP_PASSWORD_KEY_VAULT_SECRET);
2121
}
2222

2323
public String getOboPassword(){

src/integrationtest/java/labapi/HttpClientHelper.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,22 @@
1515

1616
class HttpClientHelper {
1717

18-
static String sendRequestToLab(String url, Map<String, String> queryMap) throws
18+
static String sendRequestToLab(String url, Map<String, String> queryMap, String accessToken) throws
1919
IOException {
20-
return sendRequestToLab(buildUrl(url, queryMap));
20+
return sendRequestToLab(buildUrl(url, queryMap), accessToken);
2121
}
2222

23-
static String sendRequestToLab(String url, String id) throws
23+
static String sendRequestToLab(String url, String id, String accessToken) throws
2424
IOException {
25-
return sendRequestToLab(new URL(url + "/" + id));
25+
return sendRequestToLab(new URL(url + "/" + id), accessToken);
2626
}
2727

28-
static String sendRequestToLab(URL labUrl) throws
28+
static String sendRequestToLab(URL labUrl, String accessToken) throws
2929
IOException {
3030
HttpsURLConnection conn = (HttpsURLConnection) labUrl.openConnection();
31+
32+
conn.setRequestProperty("Authorization", "Bearer " + accessToken);
33+
3134
conn.setReadTimeout(20000);
3235
conn.setConnectTimeout(20000);
3336

src/integrationtest/java/labapi/LabConstants.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ public class LabConstants {
99
public final static String LAB_APP_ENDPOINT = "https://msidlab.com/api/App";
1010
public final static String LAB_LAB_ENDPOINT = "https://msidlab.com/api/Lab";
1111

12-
public final static String APP_ID_URL = "https://msidlabs.vault.azure.net/secrets/LabVaultAppID/4032a45f48dc424d8edd445a42d25960";
13-
public final static String APP_PASSWORD_URL = "https://msidlabs.vault.azure.net/secrets/LabVaultAppSecret/c2be68b1f01d4861819d6afde2ec71e3";
12+
public final static String APP_ID_KEY_VAULT_SECRET = "https://msidlabs.vault.azure.net/secrets/LabVaultAppID/4032a45f48dc424d8edd445a42d25960";
13+
public final static String APP_PASSWORD_KEY_VAULT_SECRET = "https://msidlabs.vault.azure.net/secrets/LabVaultAppSecret/c2be68b1f01d4861819d6afde2ec71e3";
1414
public final static String USER_MSA_USERNAME_URL = "https://msidlabs.vault.azure.net/secrets/MSA-MSIDLAB4-UserName/a6df85b08cf54347a64db17fe34d9a5f";
1515
public final static String USER_MSA_PASSWORD_URL= "https://msidlabs.vault.azure.net/secrets/MSA-MSIDLAB4-Password/69850200618d43cf86c5b51e4cf8a7e5";
1616
public final static String OBO_APP_PASSWORD_URL = "https://msidlabs.vault.azure.net/secrets/TodoListServiceV2-OBO/c58ba97c34ca4464886943a847d1db56";

src/integrationtest/java/labapi/LabService.java

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,45 @@
44
package labapi;
55

66
import com.google.gson.Gson;
7+
import com.microsoft.aad.msal4j.*;
78

9+
import java.net.MalformedURLException;
10+
import java.util.Collections;
811
import java.util.HashMap;
912
import java.util.Map;
13+
import java.util.concurrent.ExecutionException;
1014

1115
public class LabService {
1216

17+
static ConfidentialClientApplication labApp;
18+
19+
static void initLabApp() throws MalformedURLException {
20+
KeyVaultSecretsProvider keyVaultSecretsProvider = new KeyVaultSecretsProvider();
21+
22+
String appID = keyVaultSecretsProvider.getSecret(LabConstants.APP_ID_KEY_VAULT_SECRET);
23+
String appSecret = keyVaultSecretsProvider.getSecret(LabConstants.APP_PASSWORD_KEY_VAULT_SECRET);
24+
25+
labApp = ConfidentialClientApplication.builder(
26+
appID, ClientCredentialFactory.createFromSecret(appSecret)).
27+
authority(TestConstants.MICROSOFT_AUTHORITY).
28+
build();
29+
}
30+
31+
static String getLabAccessToken() throws MalformedURLException, ExecutionException, InterruptedException {
32+
if(labApp == null){
33+
initLabApp();
34+
}
35+
return labApp.acquireToken(ClientCredentialParameters
36+
.builder(Collections.singleton(TestConstants.MSIDLAB_DEFAULT_SCOPE))
37+
.build()).
38+
get().accessToken();
39+
}
40+
1341
User getUser(UserQueryParameters query){
1442
try {
1543
Map<String, String> queryMap = query.parameters;
16-
String result = HttpClientHelper.sendRequestToLab(LabConstants.LAB_USER_ENDPOINT, queryMap);
44+
String result = HttpClientHelper.sendRequestToLab(
45+
LabConstants.LAB_USER_ENDPOINT, queryMap, getLabAccessToken());
1746

1847
User[] users = new Gson().fromJson(result, User[].class);
1948
User user = users[0];
@@ -31,18 +60,20 @@ User getUser(UserQueryParameters query){
3160

3261
public static App getApp(String appId){
3362
try {
34-
String result = HttpClientHelper.sendRequestToLab(LabConstants.LAB_APP_ENDPOINT, appId);
63+
String result = HttpClientHelper.sendRequestToLab(
64+
LabConstants.LAB_APP_ENDPOINT, appId, getLabAccessToken());
3565
App[] apps = new Gson().fromJson(result, App[].class);
3666
return apps[0];
3767
} catch (Exception ex) {
3868
throw new RuntimeException("Error getting app from lab: " + ex.getMessage());
3969
}
4070
}
4171

42-
public static Lab getLab(String labId){
72+
public static Lab getLab(String labId) {
4373
String result;
4474
try {
45-
result = HttpClientHelper.sendRequestToLab(LabConstants.LAB_LAB_ENDPOINT, labId);
75+
result = HttpClientHelper.sendRequestToLab(
76+
LabConstants.LAB_LAB_ENDPOINT, labId, getLabAccessToken());
4677
Lab[] labs = new Gson().fromJson(result, Lab[].class);
4778
return labs[0];
4879
} catch (Exception ex) {
@@ -55,7 +86,8 @@ private String getUserSecret(String labName){
5586
try {
5687
Map<String, String> queryMap = new HashMap<>();
5788
queryMap.put("secret", labName);
58-
result = HttpClientHelper.sendRequestToLab(LabConstants.LAB_USER_SECRET_ENDPOINT, queryMap);
89+
result = HttpClientHelper.sendRequestToLab(
90+
LabConstants.LAB_USER_SECRET_ENDPOINT, queryMap, getLabAccessToken());
5991

6092
return new Gson().fromJson(result, UserSecret.class).value;
6193
} catch (Exception ex) {

0 commit comments

Comments
 (0)