【问题标题】:Android ADAL not allowed to load local resourceAndroid ADAL 不允许加载本地资源
【发布时间】:2016-01-25 06:55:21
【问题描述】:

先了解一些快速信息:

  • 应用程序是使用 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 设置,所以我必须做一些其他的事情大大地。 据我所知,我也无法更改 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) 上对其进行了测试,它确实可以工作,所以这不是代码的逻辑。

【问题讨论】:

    标签: android azure webview xamarin adal


    【解决方案1】:

    所有版本的 ADAL 都是开源的。您可以在此处找到此特定版本的源代码:

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

    【讨论】:

    • 这个项目的命名让我很困惑......但它似乎毕竟是正确的,我会看看我能做什么。同时,欢迎提出建议。
    【解决方案2】:

    所以不管出于什么奇怪的原因,android 突然觉得这一切都很酷。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-08
      • 2016-11-04
      • 2019-02-02
      • 2023-04-02
      • 2014-12-10
      • 1970-01-01
      相关资源
      最近更新 更多