Skip to content

Commit 632051a

Browse files
author
Santiago Gonzalez
committed
Merge branch 'dev' into sagonzal/serverTelemetryV2
2 parents 7e49572 + 30ee574 commit 632051a

File tree

54 files changed

+2206
-879
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+2206
-879
lines changed

bnd.bnd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Export-Package: com.microsoft.aad.msal4j

build/credscan-exclude.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@
1212
{
1313
"placeholder": "ClientPassword",
1414
"_justification" : "credential used for testing. not associated with any tenant"
15+
},
16+
{
17+
"placeholder": "B2C_CONFIDENTIAL_CLIENT_APP_SECRET",
18+
"_justification" : "Not a credential, just the identifier of the secret exposed by test lab API"
19+
},
20+
{
21+
"placeholder": "MSIDLABB2C-MSAapp-AppSecret",
22+
"_justification" : "Not a credential, just the identifier of the secret exposed by test lab API"
1523
}
1624
]
1725
}

pom.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@
162162
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
163163
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
164164
</manifest>
165+
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
165166
</archive>
166167
</configuration>
167168
</plugin>
@@ -249,6 +250,18 @@
249250
</execution>
250251
</executions>
251252
</plugin>
253+
<plugin>
254+
<groupId>biz.aQute.bnd</groupId>
255+
<artifactId>bnd-maven-plugin</artifactId>
256+
<version>4.3.1</version>
257+
<executions>
258+
<execution>
259+
<goals>
260+
<goal>bnd-process</goal>
261+
</goals>
262+
</execution>
263+
</executions>
264+
</plugin>
252265
</plugins>
253266
</build>
254267
</project>
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
package com.microsoft.aad.msal4j;
5+
6+
import labapi.B2CProvider;
7+
import labapi.FederationProvider;
8+
import labapi.User;
9+
import org.slf4j.Logger;
10+
import org.slf4j.LoggerFactory;
11+
import org.testng.Assert;
12+
import org.testng.annotations.Test;
13+
14+
import java.net.MalformedURLException;
15+
import java.net.URI;
16+
import java.net.URL;
17+
import java.util.Collections;
18+
19+
public class AcquireTokenInteractiveIT extends SeleniumTest {
20+
21+
private final static Logger LOG = LoggerFactory.getLogger(AuthorizationCodeIT.class);
22+
23+
@Test
24+
public void acquireTokenInteractive_ManagedUser(){
25+
User user = labUserProvider.getDefaultUser();
26+
assertAcquireTokenAAD(user);
27+
}
28+
29+
@Test
30+
public void acquireTokenInteractive_ADFSv2019_OnPrem(){
31+
User user = labUserProvider.getOnPremAdfsUser(FederationProvider.ADFS_2019);
32+
assertAcquireTokenADFS2019(user);
33+
}
34+
35+
@Test
36+
public void acquireTokenInteractive_ADFSv2019_Federated(){
37+
User user = labUserProvider.getFederatedAdfsUser(FederationProvider.ADFS_2019);
38+
assertAcquireTokenAAD(user);
39+
}
40+
41+
@Test
42+
public void acquireTokenInteractive_ADFSv4_Federated(){
43+
User user = labUserProvider.getFederatedAdfsUser(FederationProvider.ADFS_4);
44+
assertAcquireTokenAAD(user);
45+
}
46+
47+
@Test
48+
public void acquireTokenInteractive_ADFSv3_Federated(){
49+
User user = labUserProvider.getFederatedAdfsUser(FederationProvider.ADFS_3);
50+
assertAcquireTokenAAD(user);
51+
}
52+
53+
@Test
54+
public void acquireTokenInteractive_ADFSv2_Federated(){
55+
User user = labUserProvider.getFederatedAdfsUser(FederationProvider.ADFS_2);
56+
assertAcquireTokenAAD(user);
57+
}
58+
59+
@Test
60+
public void acquireTokenWithAuthorizationCode_B2C_Local(){
61+
User user = labUserProvider.getB2cUser(B2CProvider.LOCAL);
62+
assertAcquireTokenB2C(user);
63+
}
64+
65+
private void assertAcquireTokenAAD(User user){
66+
67+
PublicClientApplication pca;
68+
try {
69+
pca = PublicClientApplication.builder(
70+
user.getAppId()).
71+
authority(TestConstants.ORGANIZATIONS_AUTHORITY).
72+
build();
73+
} catch(MalformedURLException ex){
74+
throw new RuntimeException(ex.getMessage());
75+
}
76+
77+
IAuthenticationResult result = acquireTokenInteractive(
78+
user,
79+
pca,
80+
TestConstants.GRAPH_DEFAULT_SCOPE);
81+
82+
Assert.assertNotNull(result);
83+
Assert.assertNotNull(result.accessToken());
84+
Assert.assertNotNull(result.idToken());
85+
Assert.assertEquals(user.getUpn(), result.account().username());
86+
}
87+
88+
private void assertAcquireTokenADFS2019(User user){
89+
PublicClientApplication pca;
90+
try {
91+
pca = PublicClientApplication.builder(
92+
TestConstants.ADFS_APP_ID).
93+
authority(TestConstants.ADFS_AUTHORITY).
94+
build();
95+
} catch(MalformedURLException ex){
96+
throw new RuntimeException(ex.getMessage());
97+
}
98+
99+
IAuthenticationResult result = acquireTokenInteractive(user, pca, TestConstants.ADFS_SCOPE);
100+
101+
Assert.assertNotNull(result);
102+
Assert.assertNotNull(result.accessToken());
103+
Assert.assertNotNull(result.idToken());
104+
Assert.assertEquals(user.getUpn(), result.account().username());
105+
}
106+
107+
private void assertAcquireTokenB2C(User user){
108+
109+
PublicClientApplication pca;
110+
try {
111+
pca = PublicClientApplication.builder(
112+
user.getAppId()).
113+
b2cAuthority(TestConstants.B2C_AUTHORITY_SIGN_IN).
114+
build();
115+
} catch(MalformedURLException ex){
116+
throw new RuntimeException(ex.getMessage());
117+
}
118+
119+
IAuthenticationResult result = acquireTokenInteractive(user, pca, user.getAppId());
120+
Assert.assertNotNull(result);
121+
Assert.assertNotNull(result.accessToken());
122+
Assert.assertNotNull(result.idToken());
123+
}
124+
125+
private IAuthenticationResult acquireTokenInteractive(
126+
User user,
127+
PublicClientApplication pca,
128+
String scope){
129+
130+
IAuthenticationResult result;
131+
try {
132+
URI url = new URI("http://localhost:8080");
133+
134+
SystemBrowserOptions browserOptions =
135+
SystemBrowserOptions
136+
.builder()
137+
.openBrowserAction(new SeleniumOpenBrowserAction(user, pca))
138+
.build();
139+
140+
InteractiveRequestParameters parameters = InteractiveRequestParameters
141+
.builder(url)
142+
.scopes(Collections.singleton(scope))
143+
.systemBrowserOptions(browserOptions)
144+
.build();
145+
146+
result = pca.acquireToken(parameters).get();
147+
148+
} catch(Exception e){
149+
LOG.error("Error acquiring token with authCode: " + e.getMessage());
150+
throw new RuntimeException("Error acquiring token with authCode: " + e.getMessage());
151+
}
152+
return result;
153+
}
154+
155+
class SeleniumOpenBrowserAction implements OpenBrowserAction {
156+
157+
private User user;
158+
private PublicClientApplication pca;
159+
160+
SeleniumOpenBrowserAction(User user, PublicClientApplication pca){
161+
this.user = user;
162+
this.pca = pca;
163+
}
164+
165+
public void openBrowser(URL url){
166+
seleniumDriver.navigate().to(url);
167+
runSeleniumAutomatedLogin(user, pca);
168+
}
169+
}
170+
}

0 commit comments

Comments
 (0)