繁体   English   中英

Android ADAL不允许加载本地资源

[英]Android ADAL not allowed to load local resource

首先提供一些快速信息:

  • 该应用程序是使用Xamarin用C#编写的
  • 对于身份验证,我使用Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory程序包版本4.0.209160138-alpha(或简称ADAL)
  • 后端通过B2C运行AAD

这种工作方式是azure将向用户显示一个webview(至少我怀疑这是一个webview),在这里他或她可以选择自己喜欢的登录/注册方法

一切正常,用户单击“登录”,ADAL从后端(facebook,g +,...)加载身份提供程序,当您选择一个身份提供程序时,将从相应的提供程序获得预期的登录屏幕。

问题在于,当用户实际使用其社交帐户登录时,应用程序突然返回到主屏幕。 如果我随后查看日志,则会看到此错误:

"Not allowed to load local resource: file:///android_asset/webkit/android-weberror.png", source: data:text/html,chromewebdata (12)

我知道这是一项安全功能,并且有很多解决方法,但是由于所有内容都是在ADAL内部生成的,并且由于我无法访问库的源代码来更改Webview设置,因此我将不得不采用其他方法。 据我所知,我也不能更改Chrome的全局设置,所以我有点卡住了。

其他人遇到过这个问题吗? 或者,甚至更好地知道解决方法? 也许我可以使用铬的替代品? (尽管我不确定该如何工作,因为我无法编辑ADAL的内部工作,而且它似乎不是开源的)

用于生成所有这些的代码非常简单(大多数代码是自动化的或在ADAL内部完成):

        public async Task<AuthenticationResult> Login(IPlatformParameters parameters, bool isSignIn)
    {
        var authContext = new AuthenticationContext(AUTHORITY_URL, new TokenCache());

        if (CORRELATION_ID != null &&
                CORRELATION_ID.Trim().Length != 0)
        {
            authContext.CorrelationId = Guid.Parse(CORRELATION_ID);
        }

        String policy = "";
        if (isSignIn)
            policy = EMAIL_SIGNIN_POLICY;
        else
            policy = EMAIL_SIGNUP_POLICY;

        return await authContext.AcquireTokenAsync(SCOPES, ADDITIONAL_SCOPES, CLIENT_ID, new Uri(REDIRECT_URL), parameters, UserIdentifier.AnyUser, EXTRA_QP, policy);            
    }
}

编辑:在较旧版本的android(api 15)上对其进行了测试,并且确实可以正常工作,因此这不是代码的逻辑。

所有版本的ADAL都是开源的。 您可以在以下位置找到此特定版本的源:

https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/tree/Convergence-v4-RELEASE

因此,无论出于什么奇怪的原因,android都认为这一切都变得很酷。

我不知道为什么,但是现在可以正常工作。 我确定地狱没有更改代码...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM