Exemple #1
0
        private async Task RunPromptTestForUserAsync(LabResponse labResponse, Prompt prompt, bool useLoginHint)
        {
            var pca = PublicClientApplicationBuilder
                      .Create(labResponse.App.AppId)
                      .WithDefaultRedirectUri()
                      .WithRedirectUri(SeleniumWebUI.FindFreeLocalhostRedirectUri())
                      .WithTestLogging()
                      .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);
        }
        private async Task AcquireTokenSilentAsync()
        {
            try
            {
                AcquireTokenInteractiveParameterBuilder request = PublicClientApplication.AcquireTokenInteractive(App.s_defaultScopes)
                                                                  .WithPrompt(Prompt.ForceLogin)
                                                                  .WithParentActivityOrWindow(App.RootViewController);
                //.WithUseEmbeddedWebView(true);

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

                AcquireTokenSilentParameterBuilder builder = PublicClientApplication.AcquireTokenSilent(
                    App.s_defaultScopes,
                    result.Account.Username);

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

                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);
            }
        }
        private async Task AcquireTokenInteractiveAsync(Prompt prompt)
        {
            try
            {
                AcquireTokenInteractiveParameterBuilder request = PublicClientApplication.AcquireTokenInteractive(App.s_defaultScopes)
                                                                  .WithPrompt(prompt)
                                                                  .WithParentActivityOrWindow(App.RootViewController);
                //.WithUseEmbeddedWebView(true);

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

                var resText = GetResultDescription(result);

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

                acquireResponseLabel.Text = resText;
            }
            catch (Exception exception)
            {
                CreateExceptionMessage(exception);
            }
        }
Exemple #4
0
        private async Task SignInAsync()
        {
            try
            {
                IEnumerable <IAccount> accounts = await App.PCA.GetAccountsAsync();

                AuthenticationResult silentAuthResult = await App.PCA.AcquireTokenSilent(AuthSettings.Scopes.Split(' '), accounts.FirstOrDefault()).ExecuteAsync();
            }
            catch (MsalUiRequiredException)
            {
                try
                {
                    AcquireTokenInteractiveParameterBuilder interactiveRequest = App.PCA.AcquireTokenInteractive(AuthSettings.Scopes.Split(' '));

                    if (App.AuthUIParent != null)
                    {
                        interactiveRequest = interactiveRequest.WithParentActivityOrWindow(App.AuthUIParent);
                    }
                    await interactiveRequest.ExecuteAsync();
                }
                catch (Exception ex)
                {
                    await App.Current.MainPage.DisplayAlert("Authentication failed", $"{ex.Message}", "Ok");
                }
            }
            catch (Exception ex)
            {
                await App.Current.MainPage.DisplayAlert("Error", $"Authentication failed. See exception messsage for more details: {ex.Message}", "Ok");
            }

            await InitializeGraphClientAsync();
        }
        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);
            }
        }
        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);
            }
        }