Логин Xamarin Azure AD B2C, застрял на странице входа - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь войти в мобильное приложение xamarin, используя аутентификацию AAD B2C. Я создал решение в визуальной студии. В Azure я создал своего арендатора, зарегистрировал собственное приложение и веб-приложение (свойства ниже) и пытаюсь отладить свое приложение. В настоящее время я перенаправлен на страницу B2Clogin и могу ввести имя пользователя и пароль. Затем он обрабатывает запрос и остается на этой странице неопределенно долго. Когда я проверяю портал Azure, я вижу учетную запись, созданную мной на странице входа в систему B2C, и вижу успешные входы, но страница входа B2C не перенаправляет обратно в мое приложение. Я также использую AuthenticationContinuationHelper в AppDelegate.cs, а также в MainActivity.cs

В App.cs

````
     public static string B2CClientEndpoint = "<UserFlowAuthorizationEndpoint>"; //the endpoint generated when we ran the user flow.
            public static string[] B2CScopes = { "<RegisteredWebAPI.Read>" };

       PCAB2C = PublicClientApplicationBuilder.Create(B2CClientID)
                    .WithB2CAuthority("https://<DirectoryName>.b2clogin.com/tfp/<DirectoryName>.onmicrosoft.com/<Policy>")
                    .WithIosKeychainSecurityGroup("<SecurityGroup>")
                    .WithRedirectUri("msal<ApplicationID>://auth")
                    .Build();

````

В классе контроллера

````C#

     IAccount User = Accounts.FirstOrDefault();
                    if (Accounts.Count() != 0)
                    {
                        Result = await App.PCAB2C.AcquireTokenSilent(App.B2CScopes, User)
                       .WithB2CAuthority("<B2CSignInAuthority>")
                       .ExecuteAsync();
                    }
                    else
                    {
                        User = Accounts.FirstOrDefault();
                        Result = await App.PCAB2C.AcquireTokenInteractive(App.B2CScopes)
                            .WithB2CAuthority("<B2CSignInAuthority>")
                            .WithParentActivityOrWindow(App.ParentWindow)
                            .WithAccount(User)
                            .ExecuteAsync();
                    }

```

1 Ответ

0 голосов
/ 04 октября 2019

В соответствии с официальной документацией AD B2C,

Чтобы обновить и получить токены в скрытом iframe, используйте prompt = none, чтобы гарантировать, что iframe не застрянетна странице входа и сразу же возвращается.

Итак, по сути, проверьте свой URL и не забудьте просмотреть ответ об ошибке!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...