Skip to content

Commit d3ca3d2

Browse files
authored
Merge pull request #925 from AzureAD/release/1.6.1
[WIP] 1.6.1 release
2 parents 6e1b41b + 25090a3 commit d3ca3d2

24 files changed

+1442
-273
lines changed

IdentityCore/IdentityCore.xcodeproj/project.pbxproj

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1593,6 +1593,14 @@
15931593
D6D9A4BD1FBE712900EFA430 /* MSIDURLExtensionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D6D9A4BA1FBE712900EFA430 /* MSIDURLExtensionsTests.m */; };
15941594
D6D9A4BE1FBE712900EFA430 /* MSIDStringExtensionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D6D9A4BB1FBE712900EFA430 /* MSIDStringExtensionsTests.m */; };
15951595
D6D9A4BF1FBE712900EFA430 /* MSIDStringExtensionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D6D9A4BB1FBE712900EFA430 /* MSIDStringExtensionsTests.m */; };
1596+
E70C49F1258D662F00A7A07E /* MSIDLRUCache.m in Sources */ = {isa = PBXBuildFile; fileRef = E70C49F0258D662F00A7A07E /* MSIDLRUCache.m */; };
1597+
E70C49F2258D662F00A7A07E /* MSIDLRUCache.m in Sources */ = {isa = PBXBuildFile; fileRef = E70C49F0258D662F00A7A07E /* MSIDLRUCache.m */; };
1598+
E70C4A30258D68D900A7A07E /* MSIDThrottlingCacheRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = E70C4A2F258D68D900A7A07E /* MSIDThrottlingCacheRecord.m */; };
1599+
E70C4A31258D68D900A7A07E /* MSIDThrottlingCacheRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = E70C4A2F258D68D900A7A07E /* MSIDThrottlingCacheRecord.m */; };
1600+
E70C4A75258D7E7B00A7A07E /* MSIDLRUCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E70C4A74258D7E7B00A7A07E /* MSIDLRUCacheTest.m */; };
1601+
E70C4A76258D7E7B00A7A07E /* MSIDLRUCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E70C4A74258D7E7B00A7A07E /* MSIDLRUCacheTest.m */; };
1602+
E7B67216257EA84B0053773F /* MSIDThrottlingCacheRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = E7B67215257EA84B0053773F /* MSIDThrottlingCacheRecord.h */; };
1603+
E7B67294257ED6E30053773F /* MSIDLRUCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E7B67293257ED6E30053773F /* MSIDLRUCache.h */; };
15961604
/* End PBXBuildFile section */
15971605

15981606
/* Begin PBXContainerItemProxy section */
@@ -2845,6 +2853,11 @@
28452853
D6D9A4B91FBE6D1C00EFA430 /* IdentityCore.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IdentityCore.pch; sourceTree = "<group>"; };
28462854
D6D9A4BA1FBE712900EFA430 /* MSIDURLExtensionsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSIDURLExtensionsTests.m; sourceTree = "<group>"; };
28472855
D6D9A4BB1FBE712900EFA430 /* MSIDStringExtensionsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSIDStringExtensionsTests.m; sourceTree = "<group>"; };
2856+
E70C49F0258D662F00A7A07E /* MSIDLRUCache.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSIDLRUCache.m; sourceTree = "<group>"; };
2857+
E70C4A2F258D68D900A7A07E /* MSIDThrottlingCacheRecord.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSIDThrottlingCacheRecord.m; sourceTree = "<group>"; };
2858+
E70C4A74258D7E7B00A7A07E /* MSIDLRUCacheTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSIDLRUCacheTest.m; sourceTree = "<group>"; };
2859+
E7B67215257EA84B0053773F /* MSIDThrottlingCacheRecord.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSIDThrottlingCacheRecord.h; sourceTree = "<group>"; };
2860+
E7B67293257ED6E30053773F /* MSIDLRUCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSIDLRUCache.h; sourceTree = "<group>"; };
28482861
/* End PBXFileReference section */
28492862

28502863
/* Begin PBXFrameworksBuildPhase section */
@@ -4777,6 +4790,7 @@
47774790
D6DA89721FBA6A4E004C56C7 /* src */ = {
47784791
isa = PBXGroup;
47794792
children = (
4793+
E7B671B7257B15790053773F /* throttling */,
47804794
2309391A2189301600EAC95D /* MSIDJsonSerializing.h */,
47814795
1E72192224772CAF00AB9B67 /* auth_scheme */,
47824796
1EE5413D2458B2D300A86414 /* pop_manager */,
@@ -4991,10 +5005,30 @@
49915005
1EE8FF6424F4C0E600CA1445 /* File.swift */,
49925006
1EE8FF6224F4C0E600CA1445 /* IdentityCoreTests iOS-Bridging-Header.h */,
49935007
1EE8FF6324F4C0E600CA1445 /* IdentityCoreTests Mac-Bridging-Header.h */,
5008+
E70C4A74258D7E7B00A7A07E /* MSIDLRUCacheTest.m */,
49945009
);
49955010
path = tests;
49965011
sourceTree = "<group>";
49975012
};
5013+
E7B671B7257B15790053773F /* throttling */ = {
5014+
isa = PBXGroup;
5015+
children = (
5016+
E7B67214257EA7930053773F /* cache */,
5017+
);
5018+
path = throttling;
5019+
sourceTree = "<group>";
5020+
};
5021+
E7B67214257EA7930053773F /* cache */ = {
5022+
isa = PBXGroup;
5023+
children = (
5024+
E7B67215257EA84B0053773F /* MSIDThrottlingCacheRecord.h */,
5025+
E70C4A2F258D68D900A7A07E /* MSIDThrottlingCacheRecord.m */,
5026+
E7B67293257ED6E30053773F /* MSIDLRUCache.h */,
5027+
E70C49F0258D662F00A7A07E /* MSIDLRUCache.m */,
5028+
);
5029+
path = cache;
5030+
sourceTree = "<group>";
5031+
};
49985032
/* End PBXGroup section */
49995033

50005034
/* Begin PBXHeadersBuildPhase section */
@@ -5261,6 +5295,7 @@
52615295
239FE695236A507700D846AC /* MSIDJsonSerializableTypes.h in Headers */,
52625296
B2C7B3B3213C681F009FFCC1 /* MSIDErrorConverter.h in Headers */,
52635297
B2C7B3B7213C6839009FFCC1 /* MSIDErrorConverting.h in Headers */,
5298+
E7B67294257ED6E30053773F /* MSIDLRUCache.h in Headers */,
52645299
23B39A90209A85EB000AA905 /* MSIDWebFingerRequest.h in Headers */,
52655300
B2C708A5219A593C00D917B8 /* MSIDLegacyTokenRequestProvider.h in Headers */,
52665301
B286B9D32389DF1C007833AD /* MSIDAuthority.h in Headers */,
@@ -5407,6 +5442,7 @@
54075442
B286B9AE2389DD5E007833AD /* MSIDChallengeHandling.h in Headers */,
54085443
B2C7089221991CED00D917B8 /* MSIDAADV1BrokerResponse.h in Headers */,
54095444
239E3BBE23E1004F00F7A50A /* MSIDClientSDKType.h in Headers */,
5445+
E7B67216257EA84B0053773F /* MSIDThrottlingCacheRecord.h in Headers */,
54105446
B286B9822389DC13007833AD /* MSIDBrokerOperationInteractiveTokenRequest.h in Headers */,
54115447
B2C708B1219A615100D917B8 /* MSIDLegacyBrokerResponseHandler.h in Headers */,
54125448
B286B9BC2389DDF3007833AD /* MSIDAADAuthorityValidationRequest.h in Headers */,
@@ -6014,6 +6050,7 @@
60146050
B2936F9020AE05E90050C585 /* MSIDDefaultTokenCacheIntegrationTests.m in Sources */,
60156051
A08D0A3124A85C9800C9193D /* MSIDDevicePopManagerTest.m in Sources */,
60166052
23642AB62187D88C00F97009 /* MSIDAuthorityMock.m in Sources */,
6053+
E70C4A75258D7E7B00A7A07E /* MSIDLRUCacheTest.m in Sources */,
60176054
B2936F7C20ABF9570050C585 /* MSIDLegacyRefreshTokenTests.m in Sources */,
60186055
B286B9F9238A0563007833AD /* MSIDAADV2WebviewFactoryTests.m in Sources */,
60196056
23AE9DA7213A169200B285F3 /* MSIDOpenIdConfigurationInfoResponseSerializerTests.m in Sources */,
@@ -6260,6 +6297,7 @@
62606297
600D19B720964D2F0004CD43 /* MSIDWorkPlaceJoinConstants.m in Sources */,
62616298
96F94A3520817C1A0034676C /* MSIDNTLMHandler.m in Sources */,
62626299
B26A0B8E2071B763006BD95A /* MSIDAADV1Oauth2Factory.m in Sources */,
6300+
E70C49F2258D662F00A7A07E /* MSIDLRUCache.m in Sources */,
62636301
0570FE7F219B8C8C00958ECF /* MSIDCredentialCacheItem+MSIDBaseToken.m in Sources */,
62646302
B29A36C120B1289D00427B63 /* MSIDAccountIdentifier.m in Sources */,
62656303
B2EE86E123751B6F00D0BC96 /* MSIDSystemWebviewController.m in Sources */,
@@ -6372,6 +6410,7 @@
63726410
23FB5C452255A11D002BF1EB /* MSIDClaimsRequest.m in Sources */,
63736411
B2893CB11FCF6A8C00E348E9 /* NSMutableDictionary+MSIDExtensions.m in Sources */,
63746412
B227036022A367A000030ADC /* MSIDMaskedHashableLogParameter.m in Sources */,
6413+
E70C4A31258D68D900A7A07E /* MSIDThrottlingCacheRecord.m in Sources */,
63756414
B26CEAE923653C62009E6E54 /* MSIDASWebAuthenticationSessionHandler.m in Sources */,
63766415
609E74C8228DCEA1005E3FED /* MSIDAccountMetadata.m in Sources */,
63776416
B2AF1D30218BCEDE0080C1A0 /* MSIDInteractiveTokenRequest.m in Sources */,
@@ -6479,6 +6518,7 @@
64796518
96CD653120C8ACBE004813EE /* MSIDWebviewResponseTests.m in Sources */,
64806519
968871EA20AD0397009D6FC3 /* MSIDWebAADAuthResponseTests.m in Sources */,
64816520
96D3A44F20E6F7D8001BD428 /* MSIDPkceTests.m in Sources */,
6521+
E70C4A76258D7E7B00A7A07E /* MSIDLRUCacheTest.m in Sources */,
64826522
6035CD8D207EA67300369E69 /* MSIDTelemetryIntegrationTests.m in Sources */,
64836523
B27CCDD6229EF2C000CAD565 /* MSIDDictionaryExtensionsTests.m in Sources */,
64846524
B86FA7D52383757600E5195A /* MSIDMacTokenCacheTests.m in Sources */,
@@ -6759,6 +6799,7 @@
67596799
239DF9C920E05847002D428B /* MSIDAADRequestConfigurator.m in Sources */,
67606800
23B39A8220993302000AA905 /* MSIDAadAuthorityResolver.m in Sources */,
67616801
609E74C1228CC50E005E3FED /* MSIDMetadataCache.m in Sources */,
6802+
E70C4A30258D68D900A7A07E /* MSIDThrottlingCacheRecord.m in Sources */,
67626803
96F21AEE20A4C6F2002B87C3 /* UIApplication+MSIDExtensions.m in Sources */,
67636804
B253152623DD61FB00432133 /* MSIDSSOExtensionGetDeviceInfoRequest.m in Sources */,
67646805
96CE53EA20C73E3A002E24C9 /* MSIDWebviewFactory.m in Sources */,
@@ -6938,6 +6979,7 @@
69386979
B2C707F42192524700D917B8 /* MSIDDefaultTokenRequestProvider.m in Sources */,
69396980
B20657BE1FC9254800412B7D /* MSIDTelemetryCacheEvent.m in Sources */,
69406981
58B81F7D24AD0E7A00E8799E /* MSIDWebResponseOperationFactory.m in Sources */,
6982+
E70C49F1258D662F00A7A07E /* MSIDLRUCache.m in Sources */,
69416983
96F94A3A208184790034676C /* MSIDOAuth2EmbeddedWebviewController.m in Sources */,
69426984
B2E2A93E2392F91100BA2EA3 /* MSIDInteractiveTokenRequestParameters.m in Sources */,
69436985
B251CC1C2040F6B5005E0179 /* MSIDLegacyTokenCacheKey.m in Sources */,

IdentityCore/src/MSIDBrokerConstants.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,5 @@
6767
NSString *const MSID_ADAL_BROKER_MESSAGE_VERSION = @"2";
6868
NSString *const MSID_MSAL_BROKER_MESSAGE_VERSION = @"3";
6969
NSString *const MSID_BROKER_SDK_CAPABILITIES_KEY = @"sdk_broker_capabilities";
70-
NSString *const MSID_BROKER_SDK_SSO_EXTENSION_CAPABILITY = @"sso_extension";
70+
NSString *const MSID_BROKER_SDK_SSO_EXTENSION_CAPABILITY = @"sso_extension";
7171
NSString *const MSID_ADDITIONAL_EXTENSION_DATA_KEY = @"additional_extension_data";

IdentityCore/src/MSIDCache.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,21 +79,21 @@ - (id)copyAndRemoveObjectForKey:(id)key
7979

8080
- (void)setObject:(id)obj forKey:(id)key
8181
{
82-
dispatch_barrier_async(self.synchronizationQueue, ^{
82+
dispatch_barrier_sync(self.synchronizationQueue, ^{
8383
self.container[key] = obj;
8484
});
8585
}
8686

8787
- (void)removeObjectForKey:(id)key
8888
{
89-
dispatch_barrier_async(self.synchronizationQueue, ^{
89+
dispatch_barrier_sync(self.synchronizationQueue, ^{
9090
[self.container removeObjectForKey:key];
9191
});
9292
}
9393

9494
- (void)removeAllObjects
9595
{
96-
dispatch_barrier_async(self.synchronizationQueue, ^{
96+
dispatch_barrier_sync(self.synchronizationQueue, ^{
9797
[self.container removeAllObjects];
9898
});
9999
}

IdentityCore/src/cache/mac/MSIDMacCredentialStorageItem.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ - (instancetype)init
5050

5151
- (void)storeItem:(id<MSIDJsonSerializable>)item forKey:(MSIDCacheKey *)key
5252
{
53-
dispatch_barrier_async(self.queue, ^{
53+
dispatch_barrier_sync(self.queue, ^{
5454
NSString *type = [self getItemTypeFromCacheKey:key];
5555

5656
if (type)
@@ -70,7 +70,7 @@ - (void)storeItem:(id<MSIDJsonSerializable>)item forKey:(MSIDCacheKey *)key
7070

7171
- (void)mergeStorageItem:(MSIDMacCredentialStorageItem *)storageItem
7272
{
73-
dispatch_barrier_async(self.queue, ^{
73+
dispatch_barrier_sync(self.queue, ^{
7474

7575
for (NSString *typeKey in storageItem.cacheObjects)
7676
{
@@ -98,7 +98,7 @@ - (void)mergeStorageItem:(MSIDMacCredentialStorageItem *)storageItem
9898

9999
- (void)removeStoredItemForKey:(MSIDCacheKey *)key
100100
{
101-
dispatch_barrier_async(self.queue, ^{
101+
dispatch_barrier_sync(self.queue, ^{
102102
NSString *type = [self getItemTypeFromCacheKey:key];
103103

104104
if (type)

IdentityCore/src/cache/metadata/MSIDMetadataCache.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ - (instancetype)initWithPersistentDataSource:(id<MSIDMetadataCacheDataSource>)da
5050
_memoryCache = [NSMutableDictionary new];
5151
_dataSource = dataSource;
5252
NSString *queueName = [NSString stringWithFormat:@"com.microsoft.msidmetadatacache-%@", [NSUUID UUID].UUIDString];
53-
_synchronizationQueue = dispatch_queue_create([queueName cStringUsingEncoding:NSASCIIStringEncoding], DISPATCH_QUEUE_CONCURRENT);
53+
_synchronizationQueue = dispatch_queue_create([queueName cStringUsingEncoding:NSASCIIStringEncoding], DISPATCH_QUEUE_SERIAL);
5454
_jsonSerializer = [MSIDCacheItemJsonSerializer new];
5555
}
5656

IdentityCore/src/controllers/MSIDSilentController.m

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
#import "MSIDTelemetryEventStrings.h"
3030
#import "MSIDTokenResult.h"
3131
#import "MSIDAccount.h"
32+
#if TARGET_OS_IPHONE
33+
#import "MSIDBackgroundTaskManager.h"
34+
#endif
3235

3336
@interface MSIDSilentController()
3437

@@ -76,10 +79,17 @@ - (nullable instancetype)initWithRequestParameters:(nonnull MSIDRequestParameter
7679

7780
- (void)acquireToken:(nonnull MSIDRequestCompletionBlock)completionBlock
7881
{
82+
#if TARGET_OS_IPHONE
83+
[[MSIDBackgroundTaskManager sharedInstance] startOperationWithType:MSIDBackgroundTaskTypeSilentRequest];
84+
#endif
85+
7986
MSID_LOG_WITH_CTX(MSIDLogLevelInfo, self.requestParameters, @"Beginning silent flow.");
8087

8188
MSIDRequestCompletionBlock completionBlockWrapper = ^(MSIDTokenResult * _Nullable result, NSError * _Nullable error)
8289
{
90+
#if TARGET_OS_IPHONE
91+
[[MSIDBackgroundTaskManager sharedInstance] stopOperationWithType:MSIDBackgroundTaskTypeSilentRequest];
92+
#endif
8393
MSID_LOG_WITH_CTX(MSIDLogLevelInfo, self.requestParameters, @"Silent flow finished. Result %@, error: %ld error domain: %@", _PII_NULLIFY(result), (long)error.code, error.domain);
8494
completionBlock(result, error);
8595
};
@@ -102,7 +112,6 @@ - (void)acquireTokenWithRequest:(MSIDSilentTokenRequest *)request
102112
}
103113

104114
[[MSIDTelemetry sharedInstance] startEvent:self.requestParameters.telemetryRequestId eventName:MSID_TELEMETRY_EVENT_API_EVENT];
105-
106115
self.currentRequest = request;
107116
[request executeRequestWithCompletion:^(MSIDTokenResult *result, NSError *error)
108117
{

IdentityCore/src/oauth2/MSIDTokenResponse.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,10 @@
4444
*/
4545
@property (nonatomic) NSInteger expiresOn;
4646
@property (nonatomic, nullable) NSString *accessToken;
47+
// In AT Pop scenario, we need to pass back the tokenType and kid(req_conf)
4748
@property (nonatomic, nullable) NSString *tokenType;
49+
@property (nonatomic, nullable) NSString *requestConf;
50+
4851
@property (nonatomic, nullable) NSString *refreshToken;
4952
@property (nonatomic, nullable) NSString *scope;
5053
@property (nonatomic, nullable) NSString *state;

IdentityCore/src/oauth2/MSIDTokenResponse.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ - (instancetype)initWithJSONDictionary:(NSDictionary *)json error:(NSError **)er
152152
_expiresIn = [json msidIntegerObjectForKey:MSID_OAUTH2_EXPIRES_IN];
153153
_expiresOn = [json msidIntegerObjectForKey:MSID_OAUTH2_EXPIRES_ON];
154154
_tokenType = [json msidStringObjectForKey:MSID_OAUTH2_TOKEN_TYPE];
155+
_requestConf = [json msidStringObjectForKey:MSID_OAUTH2_REQUEST_CONFIRMATION];
155156
_scope = [json msidStringObjectForKey:MSID_OAUTH2_SCOPE];
156157
_state = [json msidStringObjectForKey:MSID_OAUTH2_STATE];
157158
[self setIdToken:[json msidStringObjectForKey:MSID_OAUTH2_ID_TOKEN]];
@@ -183,6 +184,7 @@ - (NSDictionary *)jsonDictionary
183184
json[MSID_OAUTH2_TOKEN_TYPE] = self.tokenType;
184185
json[MSID_OAUTH2_SCOPE] = self.scope;
185186
json[MSID_OAUTH2_ID_TOKEN] = self.idToken;
187+
json[MSID_OAUTH2_REQUEST_CONFIRMATION] = self.requestConf;
186188
}
187189

188190
json[MSID_OAUTH2_STATE] = self.state;

IdentityCore/src/requests/MSIDInteractiveTokenRequest.m

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636

3737
#if TARGET_OS_IPHONE
3838
#import "MSIDAppExtensionUtil.h"
39+
#import "MSIDBackgroundTaskManager.h"
3940
#endif
4041

4142
#if TARGET_OS_OSX
@@ -71,6 +72,10 @@ - (nullable instancetype)initWithRequestParameters:(nonnull MSIDInteractiveToken
7172

7273
- (void)executeRequestWithCompletion:(nonnull MSIDInteractiveRequestCompletionBlock)completionBlock
7374
{
75+
#if TARGET_OS_IPHONE
76+
[[MSIDBackgroundTaskManager sharedInstance] startOperationWithType:MSIDBackgroundTaskTypeInteractiveRequest];
77+
#endif
78+
7479
[super getAuthCodeWithCompletion:^(MSIDAuthorizationCodeResult * _Nullable result, NSError * _Nullable error, MSIDWebWPJResponse * _Nullable installBrokerResponse)
7580
{
7681
if (!result)
@@ -95,8 +100,10 @@ - (void)acquireTokenWithCodeResult:(MSIDAuthorizationCodeResult *)authCodeResult
95100

96101
[tokenRequest sendWithBlock:^(MSIDTokenResponse *tokenResponse, NSError *error)
97102
{
98-
#if TARGET_OS_OSX
99-
self.tokenResponseHandler.externalCacheSeeder = self.externalCacheSeeder;
103+
#if TARGET_OS_IPHONE
104+
[[MSIDBackgroundTaskManager sharedInstance] stopOperationWithType:MSIDBackgroundTaskTypeInteractiveRequest];
105+
#elif TARGET_OS_OSX
106+
self.tokenResponseHandler.externalCacheSeeder = self.externalCacheSeeder;
100107
#endif
101108
[self.tokenResponseHandler handleTokenResponse:tokenResponse
102109
requestParameters:self.requestParameters

0 commit comments

Comments
 (0)