Проблемы с подключением при использовании AcquireTokenAsync () в приложении Xamarin Forms для Windows с Azure AD B2C и настраиваемой политикой

Я использую MSAL для подключения моего приложения Xamarin.Forms-Windows 8.1 к Azure AD B2C с помощью настраиваемой политики SignInSignUp (для входа пользователя с использованием настраиваемого адреса электронной почты и пароля). «Обычная» проверка подлинности с помощью Azure AD (без настраиваемой политики) работает нормально, но когда я использую политику, появляется сообщение «Мы не можем подключиться к нужной вам службе прямо сейчас. Проверьте сетевое подключение или повторите попытку позже». появляется каждый раз после предоставления учетных данных (непосредственно в диалоговом окне). Поскольку диалог завершается некорректно, я не получаю никаких исключений или AuthenticationResult, поэтому я не могу определить конкретную проблему (проблема не в подключении к Интернету).

Примечание. Я также пробовал это в приложении Xamarin.Forms-UWP-App, что приводит меня к той же проблеме. Под iOS он работает нормально, диалог завершается и закрывается правильно.

Версии NuGet: MSAL (Microsoft.Identity.Client): 1.0.304142201-альфа Xamarin.Forms: 2.3.2.118-pre1

Это мой код (упрощенный):

var clientId = "{My application's ClientId}";
var redirectUri = "urn:ietf:wg:oauth:2.0:oob";
var authority = "https://login.microsoftonline.com/{My Azure AD B2C}";
string[] scopes = { clientId };
var policy = "{My SignUpSignIn policy}";

var clientApplication = new PublicClientApplication (authority, clientId);
clientApplication.RedirectUri = redirectUri;

var result = await this.clientApplication.AcquireTokenAsync(scopes, string.Empty, UiOptions.SelectAccount, string.Empty, null, authority, policy);

Есть идеи по этому поводу?

Заранее спасибо!

С уважением,
Марсель


person Marcel Felder    schedule 25.08.2016    source источник


Ответы (1)


Я была такая же проблема. Оказывается, я забыл правильно настроить свое мобильное приложение, чтобы разрешить вход через Active Directory.

Я предпринял следующие шаги, чтобы решить мою проблему:

  1. В Azure B2C Blade выберите Приложение и установите URL-адрес ответа на адрес экземпляра мобильных приложений Azure (например, https://myapp.azurewebsites.net), за которым следует /.auth/login/aad/callback
  2. Убедитесь, что политики, используемые в клиенте Azure Active Directory B2C, должны быть настроены так, чтобы URL-адрес ответа был таким же, как указано выше.
  3. В приложении Azure Mobile или Services перейдите в настройки -> аутентификация / авторизация и убедитесь, что для входа в систему с помощью AAD настроен запрос без аутентификации.
  4. в той же колонке выберите поставщика AAD, перейдите к расширенному и настройте идентификатор клиента и URL-адрес эмитента, при этом идентификатор клиента является идентификатором приложения клиента Azure Active Directory B2C, а URL-адрес эмитента является конечной точкой метаданных для Azure Active Directory. Политика B2C

Как только я сделал это, все заработало безупречно. Более подробные инструкции можно найти по адресу https://developer.xamarin.com/guides/xamarin-forms/web-services/authentication/azure-ad-b2c-mobile-app/

Сообщите мне, помогло ли это ...

person Alberto L. Bonfiglio    schedule 22.01.2017