Azure AD B2C никогда не входит в Xamarin Forms

Я использую Azure AD B2C с нашим мобильным приложением Формы Xamarin. Однако во время тестирования он никогда не выполняет вход в систему. Я регистрирую новую учетную запись, вводю проверочный код и пароль при появлении запроса. Когда я ввожу свои данные и пытаюсь войти в систему, он просто продолжает возвращать меня на страницу входа (где мне нужно ввести свои данные для входа ... снова).

Вот мои настройки Azure AD B2C.

public const string Tenant = "mytenant.onmicrosoft.com";
public static string ClientId = "my-clientid-for-the-application";
public static string SignUpSignInPolicy = "B2C_1_IfmMobileApp";
public static string PolicyResetPassword = "B2C_1_IfmMobileAppReset ";
public static string[] Scopes = { "" };
public static readonly string CustomRedirectUrl = $"msal{ClientId}://auth";
public static string AuthorityBase = $"https://login.microsoftonline.com/tfp/{Tenant}/";
public static string Authority = $"{AuthorityBase}{SignUpSignInPolicy}";
public static string AuthorityPasswordReset = $"{AuthorityBase}{PolicyResetPassword}";

А вот мой код входа / выхода.

private async void OnSignInSignOut(object sender, EventArgs e)
{
    try
    {
        IEnumerable<IAccount> accounts = await AuthenticationService.PCA().GetAccountsAsync();

        if (btnSignInSignOut.Text == "Sign in")
        {
            var account = this.GetAccountByPolicy(accounts, ApplicationConstants.SignUpSignInPolicy);
            AuthenticationResult ar =
                        await AuthenticationService.PCA().AcquireTokenAsync(ApplicationConstants.Scopes, account, App.UiParent);
            UpdateUserInfo(ar);
            UpdateSignInState(true);
        }
        else
        {
            foreach (var user in accounts)
            {
                await AuthenticationService.PCA().RemoveAsync(user);
            }
            UpdateSignInState(false);
        }
    }
    catch (MsalClientException ex)
    {
        await DisplayAlert($"MSAL Exception:", ex.ToString(), "Dismiss");
    }
    catch (Exception ex)
    {
        // Checking the exception message 
        // should ONLY be done for B2C
        // reset and not any other error.
        if (ex.Message.Contains("AADB2C90118"))
        {
            OnPasswordReset();
        }
        else
        {
            await DisplayAlert($"Exception:", ex.ToString(), "Dismiss");
        }
    }
}

Обновлять Просматривая журнал Android, я вижу эту ошибку каждый раз, когда пытаюсь войти в систему. Я предполагаю, что эта ошибка связана с моей проблемой.

Azure AD B2C никогда не входит в Xamarin Forms

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
163
1

Ответы 1

Мне нужно было добавить следующий код (согласно этому пример)

Для Android в файле MainActivity.cs В OnActivityResult нужно добавить

AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(requestCode, resultCode, data);

Для iOS в AppDelegate.cs нужно добавить

public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
{
    AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(url);
    return true;
}

Эти изменения гарантируют, что управление вернется к MSAL после завершения интерактивной части потока аутентификации.

Другие вопросы по теме

Похожие вопросы

Невозможно импортировать таблицу из хранилища озера данных Azure в табличном проекте службы Analysis Service
Перечисляет все большие двоичные объекты внутри контейнера Azure с поддержкой на уровне каталогов с помощью веб-интерфейса
Вызов бота Microsoft Bot Framework из веб-клиента без размещения в Azure
Как в Azure App Insight получить свойства событий, отслеживаемых из Центра приложений?
Адрес клиента не авторизован, а вызывающий абонент не является доверенной службой в Azure
Получить данные об использовании хранилища для виртуальной машины Linux с помощью Azure REST API
Ошибка развертывания функции Azure: Ошибка: ENOENT: нет такого файла или каталога, stat '/home/site/repository/node_modules/.bin/semver'
Разрешение определенному пользователю базы данных Azure SQL Server подключаться только через определенный IP-адрес
Служба AAD для обслуживания с сертификатом JWT
Azure AD удалил связанную виртуальную сеть