Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release/1.2.0 #1444

Merged
merged 63 commits into from Mar 2, 2022
Merged
Show file tree
Hide file tree
Changes from 62 commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
69c2fd1
Allow to pass eqp to the /token endpoint.
antrix1989 Nov 4, 2021
68b88c5
Merge branch 'dev' into sedemche/silent_eqp
antrix1989 Nov 8, 2021
10e96e7
Update changelog.
antrix1989 Nov 8, 2021
0b96cc4
..
Dec 2, 2021
45e0126
merge with dev
Dec 3, 2021
c261ac7
updated changelog
Dec 3, 2021
923d6d8
Merge pull request #1417 from AzureAD/peter/wpjCategoryUpdate
NerevarineRule Dec 3, 2021
66b4c7e
Merge branch 'dev' into jason/mergeMasterToDev
jasoncoolmax Dec 9, 2021
36cb4ae
Update common core
jasoncoolmax Dec 9, 2021
f42214f
Merge pull request #1422 from AzureAD/jason/mergeMasterToDev
jasoncoolmax Dec 9, 2021
7f681e3
Updating common-core for fix in embedded wv
ameyapat Dec 16, 2021
40de5dc
Updating changelog
ameyapat Dec 16, 2021
d93679a
Add PR number in changelog
ameyapat Dec 16, 2021
12296b7
Add additional flag to know when to wipe cache for all accounts.
juan-arias Dec 21, 2021
2dc3190
Add button to wipe all accounts in MSAL Test App
juan-arias Dec 21, 2021
98bf967
Update submodule
juan-arias Dec 21, 2021
1c5d80e
Update submodule
juan-arias Dec 28, 2021
cf520ac
Update submodule
juan-arias Dec 28, 2021
411b96d
Merge pull request #1424 from AzureAD/ameyapat/fix-embedded-wv-naviga…
ameyapat Jan 4, 2022
80ce1c9
Merge master in dev (#1432)
antrix1989 Jan 20, 2022
cc6ac45
Multiple WPJ PkeyAuth support
Jan 25, 2022
47e7e62
Add a list of additional locations for partner caches to be wiped. Ad…
juan-arias Jan 27, 2022
30b7bdf
Merge dev into jarias/1517066-wipeCacheForAllAccounts
juan-arias Jan 27, 2022
5d7d2c4
Update changelog
juan-arias Jan 27, 2022
971ed86
Update comments for wipeCacheForAllAccounts property.
juan-arias Jan 27, 2022
e6e6afc
Add SBOM task (#1425)
antrix1989 Jan 28, 2022
dc5ef46
Changes to expose Mdm Id via Device Info sso ext request
Veena11 Jan 28, 2022
c141eee
Addressed review comments
Veena11 Jan 29, 2022
ab6b8a4
Multitenant PkeyAuth support
Jan 31, 2022
80287c7
Merge dev in common core
Jan 31, 2022
51db9ae
Merge dev from MSAL
Jan 31, 2022
b7da952
Updated changelog
Jan 31, 2022
db82d88
Fixed changelog
Jan 31, 2022
34d8174
Fixed library version in Info.plist files
Jan 31, 2022
a90f597
Revert breaking API change to unbreak MSAL CPP
Jan 31, 2022
06c765a
Update code to remove token cache from additional locations, allow to…
juan-arias Jan 31, 2022
c27ffc8
Merge branch 'dev' into jarias/1517066-wipeCacheForAllAccounts
juan-arias Jan 31, 2022
16d0d19
Fix build error, code will only run on MacOS
juan-arias Jan 31, 2022
a8e3966
Updated to return mdmId only if not nil or not empty
Veena11 Feb 3, 2022
3749484
Add more logs in getDeviceInfo flow due to an IcM (#1439)
kaisong1990 Feb 4, 2022
9b857dc
Read the keychain data in order to trigger the prompt asking for logi…
juan-arias Feb 4, 2022
4a0d25f
Merge branch 'dev' into jarias/1517066-wipeCacheForAllAccounts
juan-arias Feb 4, 2022
a96c439
Update submodule
juan-arias Feb 4, 2022
df0b4ee
Return failing additional partner locations as userInfo in case of er…
juan-arias Feb 5, 2022
05b6ac7
Continue trying to remove remaining partner locations cache if there …
juan-arias Feb 8, 2022
93b049d
Update MSAL.podspec
Lutzifer Feb 8, 2022
21d8ab1
Merge pull request #1440 from Lutzifer/patch-1
oldalton Feb 8, 2022
f50f617
Update common core to v2 pkeyauth changes
Feb 8, 2022
62d3858
Addressed additional comments
Feb 8, 2022
5d1b725
Addressed comments
Feb 9, 2022
a23065e
Merge pull request #1438 from AzureAD/oldalton/multiple_pkeyauth
oldalton Feb 9, 2022
37562dd
Added more test cases
Veena11 Feb 10, 2022
010c4e2
common core updated
Veena11 Feb 10, 2022
bd13578
updated msal to point to latest common core after common core merge
Veena11 Feb 11, 2022
26400c3
resolve merge conflicts
Veena11 Feb 11, 2022
24c9963
Merge pull request #1436 from AzureAD/veena/expose_mdmId_in_DeviceInfo
Veena11 Feb 11, 2022
0b7810a
Merge branch 'dev' into jarias/1517066-wipeCacheForAllAccounts
juan-arias Feb 11, 2022
4e6cb2d
Merge pull request #1426 from AzureAD/jarias/1517066-wipeCacheForAllA…
juan-arias Feb 11, 2022
256bbf0
update versions
kaisong1990 Feb 14, 2022
dbda20c
Kaisong1990/resolve merge release conflicts (#1442)
kaisong1990 Feb 14, 2022
cf8bfd3
Merge branch 'master' into release/1.2.0
kaisong1990 Feb 14, 2022
aa3e8a7
Kaisong1990/update automation device version (#1445)
kaisong1990 Feb 17, 2022
308e98d
Update CommonCore submodule to align with its latest master hash (#1450)
kaisong1990 Mar 2, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
@@ -1,3 +1,7 @@
## [1.2.0]
* Multi-tenant PkeyAuth support in MSAL (#1438)
* Add support to wipe cache for all accounts (#1426)

## [1.1.26]
* Added more string utils in common core (#1417)
* Fixed links in iframe to open in themselves instead of browser for embedded web views (#1424)
Expand Down
6 changes: 3 additions & 3 deletions MSAL.podspec
@@ -1,9 +1,9 @@
Pod::Spec.new do |s|
s.name = "MSAL"
s.version = "1.1.26"
s.summary = "Microsoft Authentication Library (MSAL) Preview for iOS"
s.version = "1.2.0"
s.summary = "Microsoft Authentication Library (MSAL) for iOS"
s.description = <<-DESC
The MSAL library preview for iOS gives your app the ability to begin using the Microsoft Cloud by supporting Microsoft Azure Active Directory and Microsoft Accounts in a converged experience using industry standard OAuth2 and OpenID Connect. The library also supports Microsoft Azure B2C for those using our hosted identity management service.
The MSAL library for iOS gives your app the ability to begin using the Microsoft Cloud by supporting Microsoft Azure Active Directory and Microsoft Accounts in a converged experience using industry standard OAuth2 and OpenID Connect. The library also supports Microsoft Azure B2C for those using our hosted identity management service.
DESC
s.homepage = "https://github.com/AzureAD/microsoft-authentication-library-for-objc"
s.license = {
Expand Down
2 changes: 1 addition & 1 deletion MSAL/IdentityCore
Submodule IdentityCore updated 38 files
+10 −0 IdentityCore/IdentityCore.xcodeproj/project.pbxproj
+1 −0 IdentityCore/MSIDTestsHostApp/MSIDTestsHostApp.entitlements
+1 −0 IdentityCore/src/MSIDBrokerConstants.h
+1 −0 IdentityCore/src/MSIDBrokerConstants.m
+1 −0 IdentityCore/src/broker_operation/request/account_request/MSIDBrokerOperationSignoutFromDeviceRequest.h
+3 −0 IdentityCore/src/broker_operation/request/account_request/MSIDBrokerOperationSignoutFromDeviceRequest.m
+2 −0 IdentityCore/src/broker_operation/response/MSIDDeviceInfo.h
+2 −1 IdentityCore/src/broker_operation/response/MSIDDeviceInfo.m
+3 −0 IdentityCore/src/cache/accessor/MSIDDefaultTokenCacheAccessor.h
+37 −0 IdentityCore/src/cache/accessor/MSIDDefaultTokenCacheAccessor.m
+20 −13 IdentityCore/src/cache/crypto/MSIDAssymetricKeyKeychainGenerator.m
+51 −0 IdentityCore/src/cache/crypto/MSIDWPJKeyPairWithCert.h
+115 −0 IdentityCore/src/cache/crypto/MSIDWPJKeyPairWithCert.m
+1 −0 IdentityCore/src/controllers/MSIDRequestControllerFactory.h
+2 −0 IdentityCore/src/controllers/MSIDRequestControllerFactory.m
+2 −0 IdentityCore/src/controllers/broker/MSIDSSOExtensionSignoutController.h
+3 −0 IdentityCore/src/controllers/broker/MSIDSSOExtensionSignoutController.m
+1 −1 IdentityCore/src/requests/broker/MSIDSSOExtensionGetAccountsRequest.m
+1 −1 IdentityCore/src/requests/broker/MSIDSSOExtensionGetDeviceInfoRequest.m
+1 −0 IdentityCore/src/requests/broker/MSIDSSOExtensionSignoutRequest.h
+4 −0 IdentityCore/src/requests/broker/MSIDSSOExtensionSignoutRequest.m
+6 −5 IdentityCore/src/util/NSDictionary+MSIDExtensions.m
+4 −2 IdentityCore/src/workplacejoin/MSIDPkeyAuthHelper.m
+4 −8 IdentityCore/src/workplacejoin/MSIDRegistrationInformation.h
+3 −6 IdentityCore/src/workplacejoin/MSIDRegistrationInformation.m
+5 −2 IdentityCore/src/workplacejoin/MSIDWorkPlaceJoinUtil.h
+16 −0 IdentityCore/src/workplacejoin/MSIDWorkPlaceJoinUtilBase.h
+79 −2 IdentityCore/src/workplacejoin/MSIDWorkPlaceJoinUtilBase.m
+65 −11 IdentityCore/src/workplacejoin/ios/MSIDWorkPlaceJoinUtil.m
+8 −109 IdentityCore/src/workplacejoin/mac/MSIDWorkPlaceJoinUtil.m
+3 −1 IdentityCore/tests/MSIDBrokerOperationSignoutFromDeviceRequestTests.m
+4 −1 IdentityCore/tests/MSIDDeviceInfoTests.m
+11 −5 IdentityCore/tests/MSIDDictionaryExtensionsTests.m
+5 −5 IdentityCore/tests/MSIDPkeyAuthHelperTests.m
+231 −21 IdentityCore/tests/MSIDWorkPlaceJoinUtilTests.m
+78 −0 IdentityCore/tests/integration/MSIDDefaultTokenCacheIntegrationTests.m
+4 −0 IdentityCore/tests/integration/MSIDSSOExtensionSignoutRequestIntegrationTests.m
+7 −0 changelog.txt
1 change: 1 addition & 0 deletions MSAL/MSAL Test App.entitlements
Expand Up @@ -8,6 +8,7 @@
<string>$(AppIdentifierPrefix)com.microsoft.adalcache</string>
<string>$(AppIdentifierPrefix)com.microsoft.workplacejoin</string>
<string>$(AppIdentifierPrefix)com.microsoft.ssoseeding</string>
<string>$(AppIdentifierPrefix)com.microsoft.workplacejoin.v2</string>
</array>
</dict>
</plist>
20 changes: 20 additions & 0 deletions MSAL/MSAL.xcodeproj/project.pbxproj
Expand Up @@ -88,6 +88,14 @@
04D32CAF1FD615B3000B123E /* MSALErrorConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 04D32CAD1FD615B3000B123E /* MSALErrorConverter.m */; };
04D32CD01FD8AFF3000B123E /* MSALErrorConverterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 04D32CCF1FD8AFF3000B123E /* MSALErrorConverterTests.m */; };
04D32CD11FD8AFF3000B123E /* MSALErrorConverterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 04D32CCF1FD8AFF3000B123E /* MSALErrorConverterTests.m */; };
0D96DB3727850E3900DEAF87 /* MSALWipeCacheForAllAccountsConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D96DB3627850E3900DEAF87 /* MSALWipeCacheForAllAccountsConfig.m */; };
0D96DB3827850E8200DEAF87 /* MSALWipeCacheForAllAccountsConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D96DB3627850E3900DEAF87 /* MSALWipeCacheForAllAccountsConfig.m */; };
0D96DB3927850E8400DEAF87 /* MSALWipeCacheForAllAccountsConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D96DB3627850E3900DEAF87 /* MSALWipeCacheForAllAccountsConfig.m */; };
0D96DB3A27850E8500DEAF87 /* MSALWipeCacheForAllAccountsConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D96DB3627850E3900DEAF87 /* MSALWipeCacheForAllAccountsConfig.m */; };
0D96DB3B27850F0E00DEAF87 /* MSALWipeCacheForAllAccountsConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D96DB2E27850E1300DEAF87 /* MSALWipeCacheForAllAccountsConfig.h */; settings = {ATTRIBUTES = (Public, ); }; };
0D96DB3C27850F0F00DEAF87 /* MSALWipeCacheForAllAccountsConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D96DB2E27850E1300DEAF87 /* MSALWipeCacheForAllAccountsConfig.h */; settings = {ATTRIBUTES = (Public, ); }; };
0D96DB3D27850F1100DEAF87 /* MSALWipeCacheForAllAccountsConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D96DB2E27850E1300DEAF87 /* MSALWipeCacheForAllAccountsConfig.h */; settings = {ATTRIBUTES = (Public, ); }; };
0D96DB3E27850F1200DEAF87 /* MSALWipeCacheForAllAccountsConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D96DB2E27850E1300DEAF87 /* MSALWipeCacheForAllAccountsConfig.h */; settings = {ATTRIBUTES = (Public, ); }; };
1E04572324BD5A7D00444756 /* MSALCacheItemDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E04572024BD5A7D00444756 /* MSALCacheItemDetailViewController.m */; };
1E06CD6524D116F800E3D0E5 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6A206371FC510B500755A51 /* Security.framework */; };
1E1A2E042256D12F001009ED /* MSALTestAppSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = D61A64B01E5AAC5C0086D120 /* MSALTestAppSettings.m */; };
Expand Down Expand Up @@ -1096,6 +1104,8 @@
04D32CAC1FD61585000B123E /* MSALErrorConverter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSALErrorConverter.h; sourceTree = "<group>"; };
04D32CAD1FD615B3000B123E /* MSALErrorConverter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSALErrorConverter.m; sourceTree = "<group>"; };
04D32CCF1FD8AFF3000B123E /* MSALErrorConverterTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSALErrorConverterTests.m; sourceTree = "<group>"; };
0D96DB2E27850E1300DEAF87 /* MSALWipeCacheForAllAccountsConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSALWipeCacheForAllAccountsConfig.h; sourceTree = "<group>"; };
0D96DB3627850E3900DEAF87 /* MSALWipeCacheForAllAccountsConfig.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSALWipeCacheForAllAccountsConfig.m; sourceTree = "<group>"; };
1E04571F24BD5A7D00444756 /* MSALCacheItemDetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSALCacheItemDetailViewController.h; sourceTree = "<group>"; };
1E04572024BD5A7D00444756 /* MSALCacheItemDetailViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSALCacheItemDetailViewController.m; sourceTree = "<group>"; };
1E1A2E052256D194001009ED /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
Expand Down Expand Up @@ -1708,6 +1718,7 @@
96B5E6F02256D197002232F9 /* MSALExtraQueryParameters.h */,
96B5E6F12256D197002232F9 /* MSALExtraQueryParameters.m */,
2338295622D7E49E001B8AD6 /* MSALWebviewParameters.m */,
0D96DB3627850E3900DEAF87 /* MSALWipeCacheForAllAccountsConfig.m */,
);
path = configuration;
sourceTree = "<group>";
Expand Down Expand Up @@ -1941,6 +1952,7 @@
96B5E6CC2256D152002232F9 /* MSALCacheConfig.h */,
B29A56A4228262770023F5E6 /* MSALExternalAccountProviding.h */,
B29A56B8228266B40023F5E6 /* MSALSerializedADALCacheProvider.h */,
0D96DB2E27850E1300DEAF87 /* MSALWipeCacheForAllAccountsConfig.h */,
);
path = cache;
sourceTree = "<group>";
Expand Down Expand Up @@ -2512,6 +2524,7 @@
B2D4789D230E3E14005AE186 /* MSALAccount+MultiTenantAccount.h in Headers */,
B2D47889230E3DCC005AE186 /* MSALAADOauth2Provider.h in Headers */,
B273D0AD226E8585005A7BB4 /* MSALErrorConverter+Internal.h in Headers */,
0D96DB3E27850F1200DEAF87 /* MSALWipeCacheForAllAccountsConfig.h in Headers */,
B2D478B8230E3E90005AE186 /* MSALExternalAccountHandler.h in Headers */,
1E5319C724A51F33007BCF30 /* MSALHttpMethod.h in Headers */,
04A6B5C0226937530035C7C2 /* MSALAccount+Internal.h in Headers */,
Expand Down Expand Up @@ -2634,6 +2647,7 @@
B273D07F226E8507005A7BB4 /* MSALPublicClientStatusNotifications.h in Headers */,
B2D478AC230E3E88005AE186 /* MSALLegacySharedMSAAccount.h in Headers */,
B2D4789E230E3E2C005AE186 /* MSALWebviewParameters.h in Headers */,
0D96DB3D27850F1100DEAF87 /* MSALWipeCacheForAllAccountsConfig.h in Headers */,
B2D478AA230E3E82005AE186 /* MSALLegacySharedADALAccount.h in Headers */,
B273D0B6226E8596005A7BB4 /* MSALPublicClientApplication+Internal.h in Headers */,
B2D47890230E3DD9005AE186 /* MSALOauth2Provider+Internal.h in Headers */,
Expand Down Expand Up @@ -2748,6 +2762,7 @@
B273D0C1226E85A7005A7BB4 /* MSALGlobalConfig+Internal.h in Headers */,
232D69002240A3FF00594BBD /* MSALTokenParameters+Internal.h in Headers */,
B273D0C7226E85C2005A7BB4 /* MSALCacheConfig+Internal.h in Headers */,
0D96DB3B27850F0E00DEAF87 /* MSALWipeCacheForAllAccountsConfig.h in Headers */,
96CF95232268FD0500D97374 /* MSALAuthority.h in Headers */,
B27CCDF2229F9F4700CAD565 /* MSALAccountEnumerationParameters.h in Headers */,
963377BF211E14C600943EE0 /* MSALWebviewType_Internal.h in Headers */,
Expand Down Expand Up @@ -2859,6 +2874,7 @@
1EDAE331218A4FA2001898E1 /* MSALAuthority_Internal.h in Headers */,
23014D4625672DF9005E12F2 /* MSALAuthenticationSchemePop+Internal.h in Headers */,
B273D0C0226E85A7005A7BB4 /* MSALGlobalConfig+Internal.h in Headers */,
0D96DB3C27850F0F00DEAF87 /* MSALWipeCacheForAllAccountsConfig.h in Headers */,
963377C0211E14C600943EE0 /* MSALWebviewType_Internal.h in Headers */,
B203459E21AFA1FB00B221AA /* MSALRedirectUri+Internal.h in Headers */,
);
Expand Down Expand Up @@ -3507,6 +3523,7 @@
1E5319C024A51E07007BCF30 /* MSALAuthenticationSchemePop.m in Sources */,
B273D0E0226E85E3005A7BB4 /* MSALExtraQueryParameters.m in Sources */,
1E5319BC24A51DF5007BCF30 /* MSALAuthenticationSchemeBearer.m in Sources */,
0D96DB3927850E8400DEAF87 /* MSALWipeCacheForAllAccountsConfig.m in Sources */,
2343CBF02576C2D3002D405A /* MSALParameters.m in Sources */,
B2D478B4230E3E8B005AE186 /* MSALSerializedADALCacheProvider.m in Sources */,
38880DF423280C5900688C24 /* MSALPublicClientApplicationConfig.m in Sources */,
Expand Down Expand Up @@ -3588,6 +3605,7 @@
B273D0A4226E8577005A7BB4 /* MSALIndividualClaimRequest.m in Sources */,
1E5319BD24A51DF6007BCF30 /* MSALAuthenticationSchemeBearer.m in Sources */,
583BFD0F24DC8E670035B901 /* MSALRedirectUriVerifier.m in Sources */,
0D96DB3A27850E8500DEAF87 /* MSALWipeCacheForAllAccountsConfig.m in Sources */,
04A6B5B2226937070035C7C2 /* MSALPromptType.m in Sources */,
B2D478BE230E3EAF005AE186 /* MSALTenantProfile.m in Sources */,
B2D478A8230E3E5A005AE186 /* MSALTelemetryEventsObservingProxy.m in Sources */,
Expand Down Expand Up @@ -3805,6 +3823,7 @@
B29A56C222826EE20023F5E6 /* MSALSerializedADALCacheProvider.m in Sources */,
B2C0E79F23AC7996006C9CAD /* MSALParameters.m in Sources */,
B21E07B3210E542C007E3A3C /* MSALRedirectUriVerifier.m in Sources */,
0D96DB3727850E3900DEAF87 /* MSALWipeCacheForAllAccountsConfig.m in Sources */,
96B5E6EE2256D180002232F9 /* MSALSliceConfig.m in Sources */,
B2A3C28B2145FD0F0082525C /* MSALAccountsProvider.m in Sources */,
1EE776C6246C98E700F7EBFC /* MSALAuthenticationSchemePop.m in Sources */,
Expand Down Expand Up @@ -3873,6 +3892,7 @@
23A68A7D20F538B90071E435 /* MSALB2CAuthority.m in Sources */,
96B5E6EF2256D180002232F9 /* MSALSliceConfig.m in Sources */,
B2A3C28C2145FD0F0082525C /* MSALAccountsProvider.m in Sources */,
0D96DB3827850E8200DEAF87 /* MSALWipeCacheForAllAccountsConfig.m in Sources */,
232D68D9223DB8C200594BBD /* MSALSilentTokenParameters.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down
Expand Up @@ -46,6 +46,17 @@
BlueprintName = "InteractiveiOSTests"
ReferencedContainer = "container:MSAL.xcodeproj">
</BuildableReference>
<SkippedTests>
<Test
Identifier = "MSALPingUITests/testInteractivePingLogin_withConvergedApp_withPromptAlways_withLoginHint_andPassedInWebView">
</Test>
<Test
Identifier = "MSALPingUITests/testInteractivePingLogin_withConvergedApp_withPromptAlways_withLoginHint_andSystemWebView">
</Test>
<Test
Identifier = "MSALPingUITests/testInteractivePingLogin_withNonConvergedApp_withPromptAlways_noLoginHint_andEmbeddedWebView">
</Test>
</SkippedTests>
</TestableReference>
<TestableReference
skipped = "NO">
Expand Down
2 changes: 1 addition & 1 deletion MSAL/resources/ios/Info.plist
Expand Up @@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.1.26</string>
<string>1.2.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
Expand Down
2 changes: 1 addition & 1 deletion MSAL/resources/mac/Info.plist
Expand Up @@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.1.26</string>
<string>1.2.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSHumanReadableCopyright</key>
Expand Down
5 changes: 5 additions & 0 deletions MSAL/src/MSALDeviceInformation.m
Expand Up @@ -30,6 +30,7 @@
#import "MSIDDeviceInfo.h"
#import <AuthenticationServices/AuthenticationServices.h>
#import "ASAuthorizationSingleSignOnProvider+MSIDExtensions.h"
#import "MSIDBrokerConstants.h"

NSString *const MSAL_DEVICE_INFORMATION_SSO_EXTENSION_FULL_MODE_KEY = @"isSSOExtensionInFullMode";

Expand Down Expand Up @@ -115,6 +116,10 @@ - (NSString *)msalDeviceModeString
- (void) initExtraDeviceInformation:(MSIDDeviceInfo *)deviceInfo
{
[_extraDeviceInformation setValue:deviceInfo.ssoExtensionMode == MSIDSSOExtensionModeFull ? @"Yes" : @"No" forKey:MSAL_DEVICE_INFORMATION_SSO_EXTENSION_FULL_MODE_KEY];
if (![NSString msidIsStringNilOrBlank:deviceInfo.mdmId])
{
[_extraDeviceInformation setValue:deviceInfo.mdmId forKey:MSID_BROKER_MDM_ID_KEY];
}
}

- (void) addRegisteredDeviceMetadataInformation:(NSDictionary *)deviceInfoMetadata
Expand Down
78 changes: 76 additions & 2 deletions MSAL/src/MSALPublicClientApplication.m
Expand Up @@ -109,6 +109,7 @@
#import "MSIDDevicePopManager.h"
#import "MSIDAssymetricKeyLookupAttributes.h"
#import "MSIDRequestTelemetryConstants.h"
#import "MSALWipeCacheForAllAccountsConfig.h"

@interface MSALPublicClientApplication()
{
Expand Down Expand Up @@ -1434,12 +1435,84 @@ - (void)signoutWithAccount:(nonnull MSALAccount *)account
block(NO, localError, nil);
return;
}

if (signoutParameters.wipeCacheForAllAccounts)
{
BOOL result = YES;
NSError *localError;

result = [self.tokenCache clearCacheForAllAccountsWithContext:nil error:&localError];

if (!result)
{
block(NO, localError, nil);
return;
}


#if !TARGET_OS_IPHONE
// Clear additional cache locations
NSDictionary<NSString *, NSDictionary *> *additionalPartnerLocations = MSALWipeCacheForAllAccountsConfig.additionalPartnerLocations;
if (additionalPartnerLocations && additionalPartnerLocations.count > 0)
{
NSError *removePartnerLocationError = nil;
NSMutableArray <NSString *> *locationErrors = nil;
MSIDMacACLKeychainAccessor *keychainAccessor = [[MSIDMacACLKeychainAccessor alloc] initWithTrustedApplications:nil accessLabel:@"Microsoft Credentials" error:nil];
for (NSString* locationName in additionalPartnerLocations)
{
localError = nil;
NSDictionary *cacheLocation = additionalPartnerLocations[locationName];

// Try to read the keychain data in order to trigger the prompt asking for login password, user HAS TO click 'Always Allow' to then be able to delete it.
[keychainAccessor getDataWithAttributes:cacheLocation
context:nil
error:&localError];

if (localError)
{
result = NO;
if (!locationErrors)
{
locationErrors = [[NSMutableArray alloc] init];
}
[locationErrors addObject:[NSString stringWithFormat:@"'%@'", locationName]];
NSError *additionalLocationError = MSIDCreateError(MSIDErrorDomain, MSIDErrorInternal, [NSString stringWithFormat:@"WipeCacheForAllAccounts - error when reading cache for the item: %@.", locationName], nil, nil, localError, nil, nil, YES);
removePartnerLocationError = additionalLocationError;
continue;
}

BOOL removeResult = [keychainAccessor removeItemWithAttributes:cacheLocation
context:nil
error:&localError];

if (!removeResult)
{
result = NO;
if (!locationErrors)
{
locationErrors = [[NSMutableArray alloc] init];
}
[locationErrors addObject:[NSString stringWithFormat:@"'%@'", locationName]];
removePartnerLocationError = localError;
}
}

if (!result && locationErrors)
{
NSError *additionalLocationError = MSIDCreateError(MSIDErrorDomain, MSIDErrorInternal, [NSString stringWithFormat:@"WipeCacheForAllAccounts - error when removing cache for the item(s): %@. User might need to select 'Always Allow' when prompted the login password to access keychain.", [locationErrors componentsJoinedByString:@", "]], nil, nil, removePartnerLocationError, nil, @{@"locationErrors":locationErrors}, YES);
block(NO, additionalLocationError, nil);
return;
}
}
#endif
}

NSError *controllerError;
MSIDSignoutController *controller = [MSIDRequestControllerFactory signoutControllerForParameters:msidParams
oauthFactory:self.msalOauth2Provider.msidOauth2Factory
shouldSignoutFromBrowser:signoutParameters.signoutFromBrowser
shouldWipeAccount:signoutParameters.wipeAccount
shouldWipeCacheForAllAccounts:signoutParameters.wipeCacheForAllAccounts
error:&controllerError];

if (!controller)
Expand All @@ -1459,7 +1532,7 @@ - (void)signoutWithAccount:(nonnull MSALAccount *)account
- (void)getDeviceInformationWithParameters:(MSALParameters *)parameters
completionBlock:(MSALDeviceInformationCompletionBlock)completionBlock
{
MSID_LOG_WITH_CTX_PII(MSIDLogLevelInfo, nil, @"Querying device info");
MSID_LOG_WITH_CTX(MSIDLogLevelInfo, nil, @"Querying device info");

__auto_type block = ^(MSALDeviceInformation * _Nullable deviceInformation, NSError * _Nullable msidError)
{
Expand All @@ -1471,7 +1544,7 @@ - (void)getDeviceInformationWithParameters:(MSALParameters *)parameters
}
else
{
MSID_LOG_WITH_CTX_PII(MSIDLogLevelInfo, nil, @"Retrieved device info %@", deviceInformation);
MSID_LOG_WITH_CTX_PII(MSIDLogLevelInfo, nil, @"Retrieved device info %@", MSID_PII_LOG_MASKABLE(deviceInformation));
}

[MSALPublicClientApplication logOperation:@"getDeviceInformation" result:nil error:msalError context:nil];
Expand All @@ -1495,6 +1568,7 @@ - (void)getDeviceInformationWithParameters:(MSALParameters *)parameters

if (!requestParams)
{
MSID_LOG_WITH_CTX_PII(MSIDLogLevelError, nil, @"GetDeviceInfo: Error when creating requestParams: %@", requestParamsError);
block(nil, requestParamsError);
return;
}
Expand Down
4 changes: 2 additions & 2 deletions MSAL/src/MSAL_Internal.h
Expand Up @@ -26,8 +26,8 @@
//------------------------------------------------------------------------------

#define MSAL_VER_HIGH 1
#define MSAL_VER_LOW 1
#define MSAL_VER_PATCH 26
#define MSAL_VER_LOW 2
#define MSAL_VER_PATCH 0

#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)
Expand Down