Xamarin Azure AD B2C登录,停留在登录页面

时间:2019-10-04 14:52:47

标签: c# azure xamarin azure-ad-b2c

我正在尝试使用AAD B2C身份验证登录到xamarin移动应用程序。我已经在Visual Studio中创建了解决方案。在Azure中,我创建了我的租户,注册了本机应用程序和Web应用程序(下面的属性),并尝试调试我的应用程序。目前,我已重定向到B2Clogin页面,可以输入用户名和密码。然后,它处理该请求并无限期停留在该页面上。当我检查azure门户时,可以看到通过B2C登录页面创建的帐户,并且可以看到成功登录,但是B2C登录页面没有重定向回我的应用程序。 我还在AppDelegate.cs和MainActivity.cs中使用AuthenticationContinuationHelper

在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();
                    }

```

2 个答案:

答案 0 :(得分:0)

根据AD B2C的official documentation

  

要在隐藏的iframe中刷新并获取令牌,请使用hint = none来确保iframe不会卡在登录页面上并立即返回。

因此,从本质上讲,请验证您的URL,并且不要忘记查看错误响应!

答案 1 :(得分:0)

我遇到了这个问题,并通过降低最低目标Android和iOS版本来解决了这个问题。

ie:Android 8.0及更高版本和iOS min 13.0

显然,MSAL具有Xamarin Forms构建中的最低OS版本。

enter image description here