Android 不允许 ADAL 加载本地资源

Android ADAL not allowed to load local resource

首先是一些快速信息:

这样做的方式是 azure 会向用户展示一个 webview(至少我怀疑它是一个 webview),用户可以在其中 select 他首选的签名方法 in/up

一切正常,用户点击 "log in",ADAL 从后端(facebook、g+、...)加载身份提供者,当您 select 时,您会得到预期的结果来自相应提供商的登录屏幕。

问题是,当用户实际使用他们的社交帐户登录时,应用程序突然 returns 进入主屏幕。 如果我随后检查日志,我会看到此错误:

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

我知道这是一项安全功能,有很多方法可以解决这个问题,但由于所有内容都是在 ADAL 内部生成的,而且我无法访问库的源代码来更改 webview 设置,所以我必须这样做其他方式。 据我所知,我也无法更改 Chromium 的全局设置,所以我有点卡住了。

还有其他人遇到过这个问题吗?或者,更好的是,知道解决方法? 也许我可以使用铬的替代品? (虽然我不确定它是如何工作的,因为我无法编辑 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 决定所有这些突然变得很酷。

我不知道为什么,但现在可以了。我确定他妈的没有更改代码...