Beispiel #1
0
        public async Task TestAcquireTokenInteractive_Embedded_Async()
        {
            await AcquireTokenInteractiveParameterBuilder.Create(_harness.Executor, MsalTestConstants.Scope)
            .WithUseEmbeddedWebView(true)
            .ExecuteAsync()
            .ConfigureAwait(false);

            _harness.ValidateCommonParameters(ApiEvent.ApiIds.AcquireTokenInteractive);
            _harness.ValidateInteractiveParameters(expectedEmbeddedWebView: WebViewPreference.Embedded);
        }
        public async Task TestAcquireTokenInteractive_EmbeddedNetCore_Async()
        {
            var ex = await AssertException.TaskThrowsAsync <MsalClientException>(() =>
                                                                                 AcquireTokenInteractiveParameterBuilder.Create(_harness.Executor, TestConstants.s_scope)
                                                                                 .WithUseEmbeddedWebView(true)
                                                                                 .ExecuteAsync()
                                                                                 ).ConfigureAwait(false);

            Assert.AreEqual(MsalError.WebviewUnavailable, ex.ErrorCode);
        }
Beispiel #3
0
        public async Task TestAcquireTokenInteractiveBuilderWithLoginHintAsync()
        {
            await AcquireTokenInteractiveParameterBuilder.Create(_harness.Executor, MsalTestConstants.Scope)
            .WithLoginHint(MsalTestConstants.DisplayableId)
            .ExecuteAsync()
            .ConfigureAwait(false);

            _harness.ValidateCommonParameters(ApiEvent.ApiIds.AcquireTokenInteractive);
            _harness.ValidateInteractiveParameters(expectedLoginHint: MsalTestConstants.DisplayableId);
        }
        public async Task TestAcquireTokenInteractive_ParentWindow_WithCallbackFunc_Async()
        {
            IntPtr parentWindowIntPtr = new IntPtr(12345);

            await AcquireTokenInteractiveParameterBuilder.Create(_harness.Executor, MsalTestConstants.Scope)
            .WithParentActivityOrWindowFunc(() => parentWindowIntPtr)
            .ExecuteAsync()
            .ConfigureAwait(false);

            Assert.AreEqual(parentWindowIntPtr, _harness.InteractiveParametersReceived.UiParent.OwnerWindow);
        }
        public async Task TestAcquireTokenInteractive_SystemWebview_Async()
        {
            var customWebUi = Substitute.For <ICustomWebUi>();

            await AcquireTokenInteractiveParameterBuilder.Create(_harness.Executor, MsalTestConstants.Scope)
            .WithUseEmbeddedWebView(false)
            .ExecuteAsync()
            .ConfigureAwait(false);

            _harness.ValidateCommonParameters(ApiEvent.ApiIds.AcquireTokenInteractive);
            _harness.ValidateInteractiveParameters(expectedEmbeddedWebView: WebViewPreference.System);
        }
        public async Task TestAcquireTokenInteractiveBuilderWithCustomWebUiAsync()
        {
            var customWebUi = Substitute.For <ICustomWebUi>();

            await AcquireTokenInteractiveParameterBuilder.Create(_harness.Executor, MsalTestConstants.Scope)
            .WithCustomWebUi(customWebUi)
            .ExecuteAsync()
            .ConfigureAwait(false);

            _harness.ValidateCommonParameters(ApiEvent.ApiIds.AcquireTokenInteractive);
            _harness.ValidateInteractiveParameters(expectedCustomWebUi: customWebUi);
        }
        public async Task TestAcquireTokenInteractive_ParentWindow_WithCallbackFuncAndAcquireTokenBuilder_Async()
        {
            IntPtr parentWindowIntPtrFromCallback = new IntPtr(12345);
            IntPtr parentWindowIntPtrSpecific     = new IntPtr(98765);

            await AcquireTokenInteractiveParameterBuilder.Create(_harness.Executor, TestConstants.s_scope)
            .WithParentActivityOrWindowFunc(() => parentWindowIntPtrFromCallback)
            .WithParentActivityOrWindow(parentWindowIntPtrSpecific)
            .ExecuteAsync()
            .ConfigureAwait(false);

            Assert.AreEqual(parentWindowIntPtrSpecific, _harness.InteractiveParametersReceived.UiParent.OwnerWindow);
        }
        public async Task TestAcquireTokenInteractive_Options_Async()
        {
            var options = new SystemWebViewOptions();
            await AcquireTokenInteractiveParameterBuilder.Create(_harness.Executor, MsalTestConstants.Scope)
            .WithSystemWebViewOptions(options)
            .ExecuteAsync()
            .ConfigureAwait(false);

            _harness.ValidateCommonParameters(ApiEvent.ApiIds.AcquireTokenInteractive);
            _harness.ValidateInteractiveParameters(
                expectedEmbeddedWebView: WebViewPreference.System, // If system webview options are set, force usage of system webview
                browserOptions: options);
        }
        private async Task AcquireTokenSilentAsync()
        {
            try
            {
                Console.WriteLine("[TESTLOG] - start AcquireTokenSilentAsync");

                Console.WriteLine($"[TESTLOG] - PublicClientApplication? {_publicClientApplication == null}");

                AcquireTokenInteractiveParameterBuilder request = _publicClientApplication.AcquireTokenInteractive(new[] { "user.read" })
                                                                  .WithPrompt(Prompt.ForceLogin)
                                                                  .WithUseEmbeddedWebView(true);

                Console.WriteLine("[TESTLOG] - WithParentActivityOrWindow");
                Console.WriteLine($"[TESTLOG] - WithParentActivityOrWindow - root view controller {App.RootViewController}");

                request.WithParentActivityOrWindow(App.RootViewController);

                Console.WriteLine("[TESTLOG] - after creating request");
                AuthenticationResult result = await
                                              request.ExecuteAsync().ConfigureAwait(true);

                Console.WriteLine("[TESTLOG] - after executing interactive request");

                AcquireTokenSilentParameterBuilder builder = _publicClientApplication.AcquireTokenSilent(
                    App.s_scopes,
                    result.Account.Username);

                Console.WriteLine("[TESTLOG] - after creating silent request");

                AuthenticationResult res = await builder
                                           .WithForceRefresh(false)
                                           .ExecuteAsync()
                                           .ConfigureAwait(true);

                Console.WriteLine("[TESTLOG] - after executing silent request");


                var resText = GetResultDescription(res);

                if (res.AccessToken != null)
                {
                    acquireResponseTitleLabel.Text = SuccessfulResult;
                }

                acquireResponseLabel.Text = "Acquire Token Silent Acquisition Result....\n" + resText;
            }
            catch (Exception exception)
            {
                CreateExceptionMessage(exception);
            }
        }
Beispiel #10
0
        public static AcquireTokenInteractiveParameterBuilder WithUnoHelpers(this AcquireTokenInteractiveParameterBuilder builder)
        {
#if __WASM__
            builder.WithCustomWebUi(WasmWebUi.Instance);
#elif __MACOS__
#if NET6_0_OR_GREATER
            // WithUnoHelpers is not yet supported for macOS on .NET 6
            // builder.WithParentActivityOrWindow(Windows.UI.Xaml.Window.Current.Content.Window);
#else
            builder.WithParentActivityOrWindow(Windows.UI.Xaml.Window.Current.Content.Window);
#endif
#endif
            return(builder);
        }
        public async Task TestAcquireTokenInteractiveBuilderWithAccountAsync()
        {
            var account = Substitute.For <IAccount>();

            account.Username.Returns(MsalTestConstants.DisplayableId);

            await AcquireTokenInteractiveParameterBuilder.Create(_harness.Executor, MsalTestConstants.Scope)
            .WithAccount(account)
            .ExecuteAsync()
            .ConfigureAwait(false);

            _harness.ValidateCommonParameters(ApiEvent.ApiIds.AcquireTokenInteractive);
            _harness.ValidateInteractiveParameters(account, expectedLoginHint: MsalTestConstants.DisplayableId);
        }
        public async Task TestAcquireTokenInteractiveBuilderWithPromptAndExtraQueryParametersAsync()
        {
            await AcquireTokenInteractiveParameterBuilder.Create(_harness.Executor, MsalTestConstants.Scope)
            .WithLoginHint(MsalTestConstants.DisplayableId)
            .WithExtraQueryParameters("domain_hint=mydomain.com")
            .ExecuteAsync()
            .ConfigureAwait(false);

            _harness.ValidateCommonParameters(
                ApiEvent.ApiIds.AcquireTokenInteractive,
                expectedExtraQueryParameters: new Dictionary <string, string> {
                { "domain_hint", "mydomain.com" }
            });
            _harness.ValidateInteractiveParameters(
                expectedLoginHint: MsalTestConstants.DisplayableId);
        }
        private AcquireTokenInteractiveParameterBuilder ConfigureWebview(AcquireTokenInteractiveParameterBuilder builder)
        {
            switch ((string)pckWebView.SelectedItem)
            {
            case "System":
                builder = builder.WithUseEmbeddedWebView(false);
                break;

            case "Embedded":
                builder = builder.WithUseEmbeddedWebView(true);
                break;

            default:
                throw new NotImplementedException();
            }

            return(builder);
        }
        private async Task AcquireEditProfileTokenAsync()
        {
            try
            {
                AcquireTokenInteractiveParameterBuilder request = _publicClientApplication.AcquireTokenInteractive(App.s_scopes)
                                                                  .WithPrompt(Prompt.ForceLogin)
                                                                  .WithParentActivityOrWindow(App.RootViewController)
                                                                  .WithUseEmbeddedWebView(true);

                AuthenticationResult result = await
                                              request.ExecuteAsync().ConfigureAwait(true);

                // Change the policy to the edit profile policy
                // Set prompt behavior to none
                App.s_authority = App.B2CEditProfilePolicyAuthority;
                InitPublicClient();

                AcquireTokenInteractiveParameterBuilder builder =
                    _publicClientApplication.AcquireTokenInteractive(App.s_scopes)
                    .WithPrompt(Prompt.NoPrompt)
                    .WithParentActivityOrWindow(App.RootViewController)
                    .WithUseEmbeddedWebView(true);

                AuthenticationResult res = await builder
                                           .ExecuteAsync()
                                           .ConfigureAwait(true);

                var resText = GetResultDescription(res);

                if (res.AccessToken != null)
                {
                    acquireResponseTitleLabel.Text = SuccessfulResult;
                }

                acquireResponseLabel.Text = "Results from B2C edit profile test...\n" + resText;
            }
            catch (Exception exception)
            {
                CreateExceptionMessage(exception);
            }
        }
        private async Task RunPromptTestForUserAsync(LabResponse labResponse, Prompt prompt, bool useLoginHint)
        {
            var pca = PublicClientApplicationBuilder
                      .Create(labResponse.AppId)
                      .WithRedirectUri(SeleniumWebUI.FindFreeLocalhostRedirectUri())
                      .Build();

            AcquireTokenInteractiveParameterBuilder builder = pca
                                                              .AcquireTokenInteractive(s_scopes)
                                                              .WithPrompt(prompt)
                                                              .WithCustomWebUi(CreateSeleniumCustomWebUI(labResponse.User, prompt, useLoginHint));

            if (useLoginHint)
            {
                builder = builder.WithLoginHint(labResponse.User.Upn);
            }

            AuthenticationResult result = await builder
                                          .ExecuteAsync(new CancellationTokenSource(_interactiveAuthTimeout).Token)
                                          .ConfigureAwait(false);

            await MsalAssert.AssertSingleAccountAsync(labResponse, pca, result).ConfigureAwait(false);
        }
Beispiel #16
0
 public void Build(AcquireTokenInteractiveParameterBuilder builder)
 {
 }
        public async Task TestAcquireTokenInteractive_EmbeddedAndSystemOptions_Async()
        {
            var options = new SystemWebViewOptions();
            var ex      = await AssertException.TaskThrowsAsync <MsalClientException>(() =>

                                                                                      AcquireTokenInteractiveParameterBuilder.Create(_harness.Executor, MsalTestConstants.Scope)
                                                                                      .WithSystemWebViewOptions(options)
                                                                                      .WithUseEmbeddedWebView(true)
                                                                                      .ExecuteAsync()
                                                                                      ).ConfigureAwait(false);

            Assert.AreEqual(MsalError.SystemWebviewOptionsNotApplicable, ex.ErrorCode);
        }
Beispiel #18
0
 public void Build(AcquireTokenInteractiveParameterBuilder builder)
 {
     builder.WithParentActivityOrWindow(MainActivity.Current);
 }