Skip to content

Commit 77a438b

Browse files
authored
Merge pull request #978 from AzureAD/avdunn/merge-conflicts
Sync dependency removal branch with latest dev branch
2 parents 4699522 + 669770e commit 77a438b

File tree

70 files changed

+1914
-856
lines changed

Some content is hidden

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

70 files changed

+1914
-856
lines changed

RELEASES.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Microsoft Identity SDK Versioning and Servicing FAQ
2+
3+
We have adopted the semantic versioning flow that is industry standard for OSS projects. It gives the maximum amount of control on what risk you take with what versions.
4+
5+
## Semantic Versioning and API stability promises
6+
7+
Microsoft Authentication Libraries are independent open source libraries that are used by both internal and external Microsoft partners. As with the rest of Microsoft, we have moved to a rapid iteration model where bugs are fixed daily and new versions are produced as required. To communicate these frequent changes to external partners and customers, we follow the practices of other open source libraries and use semantic versioning for all our public Microsoft Authentication SDK libraries. This allows us to support our downstream partners which will lock on certain versions for stability purposes, as well as providing for the distribution over NuGet, CocoaPods, and Maven.
8+
9+
The semantics are: MAJOR.MINOR.PATCH (example 1.1.5)
10+
11+
We will update our code distributions to use the latest PATCH semantic version number in order to make sure our customers and partners get the latest bug fixes. Downstream partner needs to pull the latest PATCH version. Most partners should try lock on the latest MINOR version number in their builds and accept any updates in the PATCH number.
12+
13+
Example:
14+
Using Maven, this ensures all 1.1.0 to 1.1.x updates are included when building your code, but not 1.2.
15+
16+
```
17+
<dependency>
18+
<groupId>com.microsoft.azure</groupId>
19+
<artifactId>msal4j</artifactId>
20+
<version>[1.1.0,1.2.0)</version>
21+
</dependency>
22+
```
23+
24+
| Version | Description |
25+
|:-------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
26+
| x.x.x | PATCH version number. Incrementing these numbers is for bug fixes and updates but do not introduce new features. This is used for close partners who build on our platform release (ex. Microsoft Entra Fabric, Office, etc.). In addition, Cocoapods, NuGet, and Maven use this number to deliver the latest release to customers. This will update frequently (sometimes within the same day). There are no new features, and no regressions or API surface changes. Code will continue to work unless affected by a particular code fix. |
27+
| x.x | MINOR version numbers. These are for new feature additions that do not impact existing features or introduce regressions. They are purely additive, but may require testing to ensure nothing is impacted. All x.x.x bug fixes will also roll up in to this number. There is no regressions or API surface changes. Code will continue to work unless affected by a particular code fix or needs this new feature. |
28+
| x | MAJOR version numbers. This should be considered a new, supported version of Microsoft Authentication SDK and begins the Azure one year support cycle anew. Major new features are introduced and API changes can occur. This should only be used after a large amount of testing and used only if those features are needed. We will continue to service MAJOR version numbers with bug fixes up to the one year support cycle. |
29+
30+
## Serviceability
31+
32+
When we release a new MINOR version, the previous MINOR versions shipped within one year MAY still accept bug report and receive patches. MINOR versions more than one year old will not receive any support. If you suspect there is an issue in a 1+ year old version that you are using, please upgrade to latest MINOR version and retry, before you send out a bug report.
33+
34+
When we release a new MAJOR version, we will continue to apply bug fixes to the existing features in the previous MAJOR version for up to the 1-year support cycle for Azure.
35+
36+
## Microsoft Authentication SDKs and Microsoft Entra
37+
38+
Microsoft Authentication SDKs major versions will maintain backwards compatibility with Microsoft Entra web services through the support period. This means that the API surface area defined in a MAJOR version will continue to work for at least 1 year after release.
39+
40+
We will respond to bugs quickly from our partners and customers submitted through GitHub and through our private alias ([email protected]) for security issues and update the PATCH version number. We will also submit a change summary for each PATCH number.
41+
Occasionally, there will be security bugs or breaking bugs from our partners that will require an immediate fix and an update to all partners and customers. When this occurs, we will do an emergency roll up to a PATCH version number and update all our distribution methods to the latest.

changelog.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,19 @@ Version 1.30.0-beta
44
- Replace com.nimbusds dependencies with implementations of OAuth behavior (#926, #927, #928, #941, #945)
55
- Replace com.fasterxml.jackson with com.azure.json for JSON behavior (#947, #948)
66

7+
Version 1.22.0
8+
=============
9+
- Validate issuer from OIDC endpoint when using the oidcAuthority() API (#970)
10+
- Bump oauth2-oidc-sdk dependency to avoid CVE-2025-53864 (#975)
11+
12+
Version 1.21.0
13+
=============
14+
- Add support for claims, client capabilities, and token revocation in Service Fabric scenarios (#929, #943)
15+
- Improve retry logic for HTTP requests, and add API to disable retries (#960, #963, #964)
16+
- Support multiple date formats in Managed identity scenarios (#956)
17+
- Fix query parameter issue in IMDS scenarios (#954)
18+
- Update dependencies used in tests to avoid CVE warnings (#962)
19+
720
1.20.1
821
=============
922
- Fix Base64URL decoding bug (#938)

msal4j-sdk/pom.xml

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@
3030

3131
<properties>
3232
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
33+
<skip.unit.tests>false</skip.unit.tests>
34+
<skip.integration.tests>false</skip.integration.tests>
35+
36+
<!-- Test category control properties. -->
37+
<!-- Disable test categories by setting to 'true' in the mvn command (i.e., mvn verify -Dadfs.disabled=true)-->
38+
<adfs.disabled>false</adfs.disabled>
3339
</properties>
3440

3541
<dependencies>
@@ -57,40 +63,34 @@
5763
<version>1.6.2</version>
5864
<scope>test</scope>
5965
</dependency>
60-
<dependency>
61-
<groupId>org.apache.commons</groupId>
62-
<artifactId>commons-text</artifactId>
63-
<version>1.10.0</version>
64-
<scope>test</scope>
65-
</dependency>
6666
<dependency>
6767
<groupId>org.junit.jupiter</groupId>
6868
<artifactId>junit-jupiter-api</artifactId>
69-
<version>5.9.2</version>
69+
<version>5.13.0</version>
7070
<scope>test</scope>
7171
</dependency>
7272
<dependency>
7373
<groupId>org.junit.jupiter</groupId>
7474
<artifactId>junit-jupiter-params</artifactId>
75-
<version>5.8.1</version>
75+
<version>5.13.0</version>
7676
<scope>test</scope>
7777
</dependency>
7878
<dependency>
7979
<groupId>org.junit.jupiter</groupId>
8080
<artifactId>junit-jupiter-engine</artifactId>
81-
<version>5.9.2</version>
81+
<version>5.13.0</version>
8282
<scope>test</scope>
8383
</dependency>
8484
<dependency>
8585
<groupId>org.mockito</groupId>
8686
<artifactId>mockito-inline</artifactId>
87-
<version>4.7.0</version>
87+
<version>4.11.0</version>
8888
<scope>test</scope>
8989
</dependency>
9090
<dependency>
9191
<groupId>org.mockito</groupId>
9292
<artifactId>mockito-junit-jupiter</artifactId>
93-
<version>4.7.0</version>
93+
<version>4.11.0</version>
9494
<scope>test</scope>
9595
</dependency>
9696
<dependency>
@@ -102,19 +102,13 @@
102102
<dependency>
103103
<groupId>org.skyscreamer</groupId>
104104
<artifactId>jsonassert</artifactId>
105-
<version>1.5.0</version>
106-
<scope>test</scope>
107-
</dependency>
108-
<dependency>
109-
<groupId>org.apache.httpcomponents</groupId>
110-
<artifactId>httpclient</artifactId>
111-
<version>4.5.13</version>
105+
<version>1.5.3</version>
112106
<scope>test</scope>
113107
</dependency>
114108
<dependency>
115109
<groupId>com.azure</groupId>
116110
<artifactId>azure-security-keyvault-secrets</artifactId>
117-
<version>4.3.5</version>
111+
<version>4.9.4</version>
118112
<scope>test</scope>
119113
</dependency>
120114
<dependency>
@@ -124,15 +118,9 @@
124118
<scope>test</scope>
125119
</dependency>
126120
<dependency>
127-
<groupId>com.google.guava</groupId>
128-
<artifactId>guava</artifactId>
129-
<version>32.1.1-jre</version>
130-
<scope>test</scope>
131-
</dependency>
132-
<dependency>
133-
<groupId>ch.qos.logback</groupId>
134-
<artifactId>logback-classic</artifactId>
135-
<version>1.3.12</version>
121+
<groupId>org.apache.commons</groupId>
122+
<artifactId>commons-text</artifactId>
123+
<version>1.13.1</version>
136124
<scope>test</scope>
137125
</dependency>
138126
<dependency>
@@ -189,7 +177,9 @@
189177
<executions>
190178
<execution>
191179
<id>check</id>
192-
<goals><goal>check</goal></goals>
180+
<goals>
181+
<goal>check</goal>
182+
</goals>
193183
</execution>
194184
</executions>
195185
</plugin>
@@ -214,9 +204,9 @@
214204
<version>3.5.2</version>
215205
<configuration>
216206
<argLine>@{argLine} -noverify</argLine>
207+
<skipTests>${skip.unit.tests}</skipTests>
217208
</configuration>
218209
</plugin>
219-
220210
<plugin>
221211
<groupId>org.apache.maven.plugins</groupId>
222212
<artifactId>maven-javadoc-plugin</artifactId>
@@ -291,6 +281,12 @@
291281
</goals>
292282
</execution>
293283
</executions>
284+
<configuration>
285+
<skipTests>${skip.integration.tests}</skipTests>
286+
<systemPropertyVariables>
287+
<adfs.disabled>${adfs.disabled}</adfs.disabled>
288+
</systemPropertyVariables>
289+
</configuration>
294290
</plugin>
295291
<plugin>
296292
<groupId>biz.aQute.bnd</groupId>
@@ -323,6 +319,10 @@
323319
</execution>
324320
</executions>
325321
</plugin>
322+
<plugin>
323+
<artifactId>maven-dependency-plugin</artifactId>
324+
<version>3.1.2</version>
325+
</plugin>
326326
</plugins>
327327
</build>
328328
</project>

msal4j-sdk/src/integrationtest/java/com.microsoft.aad.msal4j/AcquireTokenInteractiveIT.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.junit.jupiter.api.AfterEach;
88
import org.junit.jupiter.api.BeforeAll;
99
import org.junit.jupiter.api.BeforeEach;
10+
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
1011
import org.slf4j.Logger;
1112
import org.slf4j.LoggerFactory;
1213
import org.junit.jupiter.api.Test;
@@ -56,13 +57,15 @@ void acquireTokenInteractive_ManagedUser(String environment) {
5657
}
5758

5859
@Test()
60+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
5961
void acquireTokenInteractive_ADFSv2019_OnPrem() {
6062
User user = labUserProvider.getOnPremAdfsUser(FederationProvider.ADFS_2019);
6163
assertAcquireTokenCommon(user, TestConstants.ADFS_AUTHORITY, TestConstants.ADFS_SCOPE);
6264
}
6365

6466
@ParameterizedTest
6567
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
68+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
6669
void acquireTokenInteractive_ADFSv2019_Federated(String environment) {
6770
cfg = new Config(environment);
6871

@@ -72,6 +75,7 @@ void acquireTokenInteractive_ADFSv2019_Federated(String environment) {
7275

7376
@ParameterizedTest
7477
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
78+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
7579
void acquireTokenInteractive_ADFSv4_Federated(String environment) {
7680
cfg = new Config(environment);
7781

msal4j-sdk/src/integrationtest/java/com.microsoft.aad.msal4j/AcquireTokenSilentIT.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import labapi.*;
77
import org.junit.jupiter.api.Test;
88
import org.junit.jupiter.api.TestInstance;
9+
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
910
import org.junit.jupiter.params.ParameterizedTest;
1011
import org.junit.jupiter.params.provider.MethodSource;
1112
import org.junit.jupiter.api.BeforeAll;
@@ -100,6 +101,7 @@ void acquireTokenSilent_ForceRefresh(String environment) throws Exception {
100101

101102
@ParameterizedTest
102103
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
104+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
103105
void acquireTokenSilent_MultipleAccountsInCache_UseCorrectAccount(String environment) throws Exception {
104106
cfg = new Config(environment);
105107

@@ -123,6 +125,7 @@ void acquireTokenSilent_MultipleAccountsInCache_UseCorrectAccount(String environ
123125

124126
@ParameterizedTest
125127
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
128+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
126129
void acquireTokenSilent_ADFS2019(String environment) throws Exception {
127130
cfg = new Config(environment);
128131

msal4j-sdk/src/integrationtest/java/com.microsoft.aad.msal4j/AuthorizationCodeIT.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.junit.jupiter.api.AfterEach;
88
import org.junit.jupiter.api.BeforeAll;
99
import org.junit.jupiter.api.BeforeEach;
10+
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
1011
import org.slf4j.Logger;
1112
import org.slf4j.LoggerFactory;
1213
import org.junit.jupiter.api.Test;
@@ -56,13 +57,15 @@ public void acquireTokenWithAuthorizationCode_ManagedUser(String environment) {
5657
}
5758

5859
@Test
60+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
5961
public void acquireTokenWithAuthorizationCode_ADFSv2019_OnPrem() {
6062
User user = labUserProvider.getOnPremAdfsUser(FederationProvider.ADFS_2019);
6163
assertAcquireTokenADFS2019(user);
6264
}
6365

6466
@ParameterizedTest
6567
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
68+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
6669
public void acquireTokenWithAuthorizationCode_ADFSv2019_Federated(String environment) {
6770
cfg = new Config(environment);
6871

@@ -72,6 +75,7 @@ public void acquireTokenWithAuthorizationCode_ADFSv2019_Federated(String environ
7275

7376
@ParameterizedTest
7477
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
78+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
7579
public void acquireTokenWithAuthorizationCode_ADFSv4_Federated(String environment) {
7680
cfg = new Config(environment);
7781

msal4j-sdk/src/integrationtest/java/com.microsoft.aad.msal4j/DeviceCodeIT.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.slf4j.LoggerFactory;
1313
import org.junit.jupiter.api.Test;
1414
import org.junit.jupiter.api.TestInstance;
15+
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
1516
import org.junit.jupiter.params.ParameterizedTest;
1617
import org.junit.jupiter.params.provider.MethodSource;
1718
import org.junit.jupiter.api.BeforeAll;
@@ -54,6 +55,7 @@ void DeviceCodeFlowADTest(String environment) throws Exception {
5455
}
5556

5657
@Test()
58+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
5759
void DeviceCodeFlowADFSv2019Test() throws Exception {
5860

5961
User user = labUserProvider.getOnPremAdfsUser(FederationProvider.ADFS_2019);

msal4j-sdk/src/integrationtest/java/com.microsoft.aad.msal4j/TokenCacheIT.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.junit.jupiter.api.Test;
88
import org.junit.jupiter.api.BeforeAll;
99
import org.junit.jupiter.api.TestInstance;
10+
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
1011

1112
import static org.junit.jupiter.api.Assertions.assertEquals;
1213
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -59,6 +60,7 @@ void singleAccountInCache_RemoveAccountTest() throws Exception {
5960
}
6061

6162
@Test
63+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
6264
void twoAccountsInCache_RemoveAccountTest() throws Exception {
6365

6466
User managedUser = labUserProvider.getDefaultUser();
@@ -108,6 +110,7 @@ void twoAccountsInCache_RemoveAccountTest() throws Exception {
108110
}
109111

110112
@Test
113+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
111114
void twoAccountsInCache_SameUserDifferentTenants_RemoveAccountTest() throws Exception {
112115

113116
UserQueryParameters query = new UserQueryParameters();
@@ -172,6 +175,7 @@ void twoAccountsInCache_SameUserDifferentTenants_RemoveAccountTest() throws Exce
172175
}
173176

174177
@Test
178+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
175179
void retrieveAccounts_ADFSOnPrem() throws Exception {
176180
UserQueryParameters query = new UserQueryParameters();
177181
query.parameters.put(UserQueryParameters.FEDERATION_PROVIDER, FederationProvider.ADFS_2019);

msal4j-sdk/src/integrationtest/java/com.microsoft.aad.msal4j/UsernamePasswordIT.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
import labapi.*;
77
import org.junit.jupiter.api.Test;
88
import org.junit.jupiter.api.TestInstance;
9+
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
910
import org.junit.jupiter.params.ParameterizedTest;
1011
import org.junit.jupiter.params.provider.MethodSource;
1112
import org.junit.jupiter.api.BeforeAll;
1213
import static org.junit.jupiter.api.Assertions.assertEquals;
13-
import static org.junit.jupiter.api.Assertions.assertNotNull;
1414

1515
import java.util.Collections;
1616
import java.util.HashMap;
@@ -39,6 +39,7 @@ void acquireTokenWithUsernamePassword_Managed(String environment) throws Excepti
3939

4040
@ParameterizedTest
4141
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
42+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
4243
void acquireTokenWithUsernamePassword_ADFSv2019_Federated(String environment) throws Exception {
4344
cfg = new Config(environment);
4445

@@ -53,6 +54,7 @@ void acquireTokenWithUsernamePassword_ADFSv2019_Federated(String environment) th
5354
}
5455

5556
@Test
57+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
5658
void acquireTokenWithUsernamePassword_ADFSv2019_OnPrem() throws Exception {
5759
UserQueryParameters query = new UserQueryParameters();
5860
query.parameters.put(UserQueryParameters.FEDERATION_PROVIDER, FederationProvider.ADFS_2019);
@@ -65,6 +67,7 @@ void acquireTokenWithUsernamePassword_ADFSv2019_OnPrem() throws Exception {
6567

6668
@ParameterizedTest
6769
@MethodSource("com.microsoft.aad.msal4j.EnvironmentsProvider#createData")
70+
@DisabledIfSystemProperty(named = "adfs.disabled", matches = "true")
6871
void acquireTokenWithUsernamePassword_ADFSv4(String environment) throws Exception {
6972
cfg = new Config(environment);
7073

0 commit comments

Comments
 (0)