Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在带有Azure AD B2C和自定义策略的Xamarin Forms Windows应用程序中使用AcquireTokenAsync()时出现连接问题_C#_Azure_Xamarin.forms_Azure Ad B2c_Msal - Fatal编程技术网

C# 在带有Azure AD B2C和自定义策略的Xamarin Forms Windows应用程序中使用AcquireTokenAsync()时出现连接问题

C# 在带有Azure AD B2C和自定义策略的Xamarin Forms Windows应用程序中使用AcquireTokenAsync()时出现连接问题,c#,azure,xamarin.forms,azure-ad-b2c,msal,C#,Azure,Xamarin.forms,Azure Ad B2c,Msal,我正在使用MSAL使用自定义登录策略(使用自定义电子邮件地址和密码登录用户)将我的Xamarin.Forms-Windows 8.1-App连接到Azure AD B2C。针对Azure AD的“正常”身份验证(无自定义策略)可以正常工作,但当我使用该策略时,每次提供凭据后(直接在对话框中)都会显示消息“我们现在无法连接到您需要的服务。请检查您的网络连接或稍后重试”。由于对话框没有正确完成,我没有检索任何异常或AuthenticationResult,因此我无法确定具体问题(internet连接

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

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

NuGet版本: MSAL(Microsoft.Identity.Client):1.0.304142201-alpha Xamarin.表格:2.3.2.118-pre1

这是我的代码(简化):

有什么想法吗

提前谢谢

问候,

马塞尔

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

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

  • 在Azure B2C刀片服务器中,选择应用程序并将回复URL设置为Azure移动应用程序实例的地址(例如),后跟/.auth/login/aad/callback
  • 确保应配置Azure Active Directory B2C租户中使用的策略,以便将回复URL设置为与上述相同
  • 在Azure移动或服务应用程序中,转到设置-->身份验证/自动化,并确保设置了未经身份验证的请求以使用AAD登录
  • 在同一刀片服务器中,选择AAD提供商,转到高级并设置客户端ID和颁发者URL,其中客户端ID是Azure Active Directory B2C租户的应用程序ID,颁发者URL是Azure Active Directory B2C策略的元数据端点
  • 一旦我做了以上工作,一切都完美无缺。 有关更详细的说明,请访问

    让我知道这是否有帮助

    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);