仅使用Xamarin表单在Android上使用JIT迁移失败的MSAL登录

时间:2017-07-31 18:19:10

标签: redirect xamarin.forms azure-ad-b2c msal

我在Visual Studio 2015中使用Xamarin Forms和新的MSAL预览v.1.1.0。该应用程序调用PublicClientApplication.AcquireTokenAsync,它会在移动设备上的Chrome中提取登录表单。

这使我的问题类似于这个问题:New preview for MSAL login redirect for Xamarin droid fails

有两点不同。首先,我间歇地得到一个不同的错误。请参阅突出显示的区别:"无法访问此站点。 msal [我的应用ID]:// auth /?state = ..."

的网页

其次,我的登录是调用WebApi,它将用户从SQL数据库迁移到Azure B2C Active Directory。我按照以下示例了解此部分:https://github.com/Azure-Samples/active-directory-b2c-advanced-policies/tree/master/Migration-JIT-sample

我注意到,当用户从我的数据库迁移到Azure B2C时,通常会发生这种情况。在这种情况下,登录被调用两次。一旦迁移用户,然后再次签署用户。当用户未迁移时,错误似乎也会间歇性地发生,通常如果我没有尝试登录几个小时,这可能是一个不同的错误。否则,登录工作正常。此外,iOS上不会发生此错误。这是一个Android唯一的错误。

我认为Android上的意图监听器无法正常工作。当我得到""这个网站无法到达......"错误,如果我从我的Android应用程序在Chrome中打开网站,我会被重定向到我的应用程序并登录。这让我觉得链接是正确的,但是监听器无法正常工作。

我猜这可能是下面代码行中的一个错误,它位于MainActivity的OnActivityResult方法中。 AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(requestCode,resultCode,data);

1 个答案:

答案 0 :(得分:0)

我想我找到了一个解决方案。我一直以多个用户身份登录,这个问题在JIT迁移之外间歇性地发生,但在JIT迁移过程中始终如一。在其他论坛上,我注意到人们有用户缓存问题。因此,在登录之前,我确保从缓存中删除所有用户。

foreach (var user in App.PCA.Users)
{
     App.PCA.Remove(user);
}

PCA是PublicClientApplication的一个实例。我还没有看到任何"这个网站无法到达。"从那时起的问题。