在Xamarin Forms中使用AcquireTokenAsync()与Azure AD B2C和自定义策略时的连接问题

时间:2016-08-25 12:41:02

标签: c# azure xamarin.forms azure-ad-b2c msal

我正在使用MSAL将我的Xamarin.Forms-Windows 8.1-App连接到Azure AD B2C,并使用自定义SignInSignUp-policy(通过使用自定义电子邮件地址和密码登录用户)。针对Azure AD的“正常”身份验证(没有自定义策略)工作正常,但是当我使用该策略时,消息“我们无法立即连接到您需要的服务。请检查您的网络连接或稍后再次尝试此操作”。每次提供凭证后(直接在对话框中)出现。由于对话框没有正确完成,我没有检索任何异常或AuthenticationResult,所以我无法确定具体问题(互联网连接本身不是问题)。

注意:我也在Xamarin.Forms-UWP-App中尝试了这个,这引出了我同样的问题。在iOS下,它工作正常,对话框完成并正确关闭。

NuGet版本: MSAL(Microsoft.Identity.Client):1.0.304142201-alpha 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);

有关于此的任何想法吗?

提前致谢!

的问候,
烫发

1 个答案:

答案 0 :(得分:2)

我有同样的问题。结果我忘了正确设置我的移动应用程序以允许通过Active Directory登录

我采取的解决了我的问题的步骤是:

  1. 在Azure B2C Blade中选择应用程序并将回复URL设置为Azure移动应用程序实例的地址(例如https://myapp.azurewebsites.net),然后是/.auth/login/aad/callback
  2. 确保应配置Azure Active Directory B2C租户中使用的策略,以便将回复URL设置为与上面相同
  3. 在Azure移动或服务应用程序中转到设置 - >身份验证/自动化,并确保设置了未经身份验证的请求以使用AAD登录
  4. 在同一刀片中选择AAD提供程序,转到高级并设置客户端ID和颁发者URL,客户端ID是Azure Active Directory B2C租户的应用程序ID,发行者URL是元数据端点。 Azure Active Directory B2C策略
  5. 一旦我做了以上所有工作完美无瑕。 更详细的说明可以在https://developer.xamarin.com/guides/xamarin-forms/web-services/authentication/azure-ad-b2c-mobile-app/

    找到

    如果这有帮助,请告诉我......