Skip to content
2 changes: 1 addition & 1 deletion MSAL/IdentityCore
Submodule IdentityCore updated 32 files
+108 −0 .github/workflows/auto-retag.yml
+86 −0 IdentityCore/IdentityCore.xcodeproj/project.pbxproj
+8 −0 IdentityCore/src/MSIDConstants.h
+4 −0 IdentityCore/src/MSIDConstants.m
+27 −17 ...yCore/src/broker_operation/request/browser_native_message_request/MSIDBrowserNativeMessageGetTokenRequest.m
+28 −3 IdentityCore/src/network/MSIDHttpRequest.m
+8 −0 IdentityCore/src/network/error_handler/MSIDAADRequestErrorHandler.m
+9 −0 IdentityCore/src/requests/MSIDSilentTokenRequest.m
+64 −0 IdentityCore/src/telemetry/execution_flow/MSIDExecutionFlow.h
+151 −0 IdentityCore/src/telemetry/execution_flow/MSIDExecutionFlow.m
+74 −0 IdentityCore/src/telemetry/execution_flow/MSIDExecutionFlowBlob.h
+94 −0 IdentityCore/src/telemetry/execution_flow/MSIDExecutionFlowBlob.m
+83 −0 IdentityCore/src/telemetry/execution_flow/MSIDExecutionFlowConstants.h
+85 −0 IdentityCore/src/telemetry/execution_flow/MSIDExecutionFlowConstants.m
+71 −0 IdentityCore/src/telemetry/execution_flow/MSIDExecutionFlowLogger.h
+163 −0 IdentityCore/src/telemetry/execution_flow/MSIDExecutionFlowLogger.m
+47 −0 IdentityCore/src/telemetry/execution_flow/MSIDExecutionFlowUtils.h
+83 −0 IdentityCore/src/telemetry/execution_flow/MSIDExecutionFlowUtils.m
+570 −0 IdentityCore/tests/MSIDExecutionFlowBlobTests.m
+39 −0 IdentityCore/tests/MSIDExecutionFlowLogger+Test.h
+951 −0 IdentityCore/tests/MSIDExecutionFlowLoggerTests.m
+112 −0 IdentityCore/tests/MSIDExecutionFlowTagTests.m
+690 −0 IdentityCore/tests/MSIDExecutionFlowTests.m
+2 −2 IdentityCore/tests/MSIDThrottlingServiceIntegrationTests.m
+2 −2 IdentityCore/tests/MSIDThumbprintCalculatorTests.m
+10 −1 IdentityCore/tests/integration/ios/MSIDDefaultSilentTokenRequestTests.m
+42 −158 azure_pipelines/broker_submodule_check.yml
+142 −0 azure_pipelines/broker_submodule_steps.yml
+2 −2 azure_pipelines/pr-validation.yml
+3 −3 build.py
+3 −0 changelog.txt
+177 −0 scripts/retag_untagged.py
91 changes: 51 additions & 40 deletions MSAL/test/app/ios/MSALTestAppAcquireTokenViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
#import "MSIDAssymetricKeyKeychainGenerator.h"
#import "MSIDAssymetricKeyLookupAttributes.h"
#import "MSIDConstants.h"
#import "MSIDExecutionFlowLogger.h"

#define TEST_EMBEDDED_WEBVIEW_TYPE_INDEX 0
#define TEST_SYSTEM_WEBVIEW_TYPE_INDEX 1
Expand Down Expand Up @@ -248,6 +249,8 @@ - (MSALInteractiveTokenParameters *)tokenParams:(BOOL)isSSOSeedingCall

parameters.loginHint = self.loginHintTextField.text;
parameters.account = settings.currentAccount;
NSUUID *correlationId = [NSUUID UUID];
parameters.correlationId = correlationId;
parameters.promptType = isSSOSeedingCall ? MSALPromptTypeDefault : [self promptTypeValue];

parameters.extraQueryParameters = isSSOSeedingCall ? [NSDictionary msidDictionaryFromWWWFormURLEncodedString:@"prompt=none"] : [NSDictionary msidDictionaryFromWWWFormURLEncodedString:self.extraQueryParamsTextField.text];
Expand Down Expand Up @@ -328,7 +331,7 @@ - (void)acquireSSOSeeding

if (!result)
{
[self updateResultViewError:error];
[self updateResultViewError:error executionFlow:nil];
}
[[NSNotificationCenter defaultCenter] postNotificationName:MSALTestAppCacheChangeNotification object:self];
});
Expand Down Expand Up @@ -392,7 +395,9 @@ - (IBAction)onAcquireTokenInteractiveButtonTapped:(__unused id)sender
{
return;
}


MSALInteractiveTokenParameters *params = [self tokenParams:NO];
[[MSIDExecutionFlowLogger sharedInstance] registerExecutionFlowWithCorrelationId:params.correlationId];
__block BOOL fBlockHit = NO;
void (^completionBlock)(MSALResult *result, NSError *error) = ^(MSALResult *result, NSError *error) {

Expand All @@ -403,30 +408,31 @@ - (IBAction)onAcquireTokenInteractiveButtonTapped:(__unused id)sender
}

fBlockHit = YES;
dispatch_async(dispatch_get_main_queue(), ^{

if (result)
{
if ([MSALTestAppSettings isSSOSeeding])
[[MSIDExecutionFlowLogger sharedInstance] retrieveAndFlushExecutionFlowWithCorrelationId:params.correlationId queryKeys:nil completion:^(NSString * _Nullable executionFlow) {
dispatch_async(dispatch_get_main_queue(), ^{
if (result)
{
[self acquireSSOSeeding];
if ([MSALTestAppSettings isSSOSeeding])
{
[self acquireSSOSeeding];
}
else
{
[self updateResultView:result executionFlow:executionFlow];
[self hideCustomeWebViewIfNeed];
}
}
else
{
[self updateResultView:result];
[self updateResultViewError:error executionFlow:executionFlow];
[self hideCustomeWebViewIfNeed];
}
}
else
{
[self updateResultViewError:error];
[self hideCustomeWebViewIfNeed];
}
[[NSNotificationCenter defaultCenter] postNotificationName:MSALTestAppCacheChangeNotification object:self];
});
[[NSNotificationCenter defaultCenter] postNotificationName:MSALTestAppCacheChangeNotification object:self];
});
}];
};

[application acquireTokenWithParameters:[self tokenParams:NO] completionBlock:completionBlock];
[application acquireTokenWithParameters:params completionBlock:completionBlock];
}

- (IBAction)onAcquireTokenSilentButtonTapped:(__unused id)sender
Expand Down Expand Up @@ -483,29 +489,34 @@ - (IBAction)onAcquireTokenSilentButtonTapped:(__unused id)sender
}

parameters.authority = settings.authority;
NSUUID *correlationId = [NSUUID UUID];
parameters.correlationId = correlationId;
[[MSIDExecutionFlowLogger sharedInstance] registerExecutionFlowWithCorrelationId:correlationId];
__block BOOL fBlockHit = NO;
self.acquireSilentButton.enabled = NO;
[application acquireTokenSilentWithParameters:parameters completionBlock:^(MSALResult *result, NSError *error)
{
if (fBlockHit)
{
[self showCompletionBlockHitMultipleTimesAlert];
return;
}

fBlockHit = YES;
dispatch_async(dispatch_get_main_queue(), ^{
self.acquireSilentButton.enabled = YES;
if (result)
[[MSIDExecutionFlowLogger sharedInstance] retrieveAndFlushExecutionFlowWithCorrelationId:correlationId queryKeys:nil completion:^(NSString * _Nullable executionFlow) {
if (fBlockHit)
{
[self updateResultView:result];
[self showCompletionBlockHitMultipleTimesAlert];
return;
}
else
{
[self updateResultViewError:error];
}
[[NSNotificationCenter defaultCenter] postNotificationName:MSALTestAppCacheChangeNotification object:self];
});

fBlockHit = YES;
dispatch_async(dispatch_get_main_queue(), ^{
self.acquireSilentButton.enabled = YES;
if (result)
{
[self updateResultView:result executionFlow:executionFlow];
}
else
{
[self updateResultViewError:error executionFlow:executionFlow];
}
[[NSNotificationCenter defaultCenter] postNotificationName:MSALTestAppCacheChangeNotification object:self];
});
}];
}];
}

Expand Down Expand Up @@ -713,16 +724,16 @@ - (void)stopStressTest
MSALGlobalConfig.loggerConfig.logLevel = MSALLogLevelVerbose;
}

- (void)updateResultViewError:(NSError *)error
- (void)updateResultViewError:(NSError *)error executionFlow:(NSString *)executionFlow
{
NSString *resultText = [NSString stringWithFormat:@"%@", error];
NSString *resultText = [NSString stringWithFormat:@"%@\n executionFlow: %@", error, executionFlow];
[self.resultTextView setText:resultText];
}

- (void)updateResultView:(MSALResult *)result
- (void)updateResultView:(MSALResult *)result executionFlow:(NSString *)executionFlow
{
NSString *resultText = [NSString stringWithFormat:@"{\n\taccessToken = %@\n\texpiresOn = %@\n\ttenantId = %@\n\tuser = %@\n\tscopes = %@\n\tauthority = %@\n\tcorrelationId = %@\n}",
[result.accessToken msidTokenHash], result.expiresOn, result.tenantProfile.tenantId, result.account, result.scopes, result.authority,result.correlationId];
NSString *resultText = [NSString stringWithFormat:@"{\n\taccessToken = %@\n\texpiresOn = %@\n\ttenantId = %@\n\tuser = %@\n\tscopes = %@\n\tauthority = %@\n\tcorrelationId = %@\n} executionFlow: %@",
[result.accessToken msidTokenHash], result.expiresOn, result.tenantProfile.tenantId, result.account, result.scopes, result.authority,result.correlationId, executionFlow];

[self.resultTextView setText:resultText];

Expand Down
Loading
Loading