Azure AD B2C登录Cordova / Ionic App

时间:2016-08-09 18:34:10

标签: cordova ionic-framework adal azure-ad-b2c azure-active-directory

TL; DR - 是否有一种简单的方法可以在离子应用上显示自定义Azure B2C注册策略?

我目前正在开发一个混合离子应用程序,需要使用Azure AD B2C API来显示由我合作的一些后端开发人员定义的自定义登录页面。

我已尝试使用ADAL cordova plugin,但据我所知,无法为新的网络视图添加自定义策略。我尝试添加" p = B2C_1_sign-in-up-policy"作为acquireTokenAsync()调用中的extraQueryParameters选项,但这给了我一个MethodNotAllowedHttpException

我仍然不确定ADAL是否/如何与B2C相关,所以我转而直接尝试Azure B2C Oauth 2.0实施。这似乎是一个错误,因为我正在手动执行ADAL插件已经在做什么。

这些都是正确的选择吗?是否有针对离子应用程序的Azure AD B2C登录的替代方法?

提前致谢

编辑:为了澄清,我让ADAL正常工作,以便从ADAL登录默认的Microsoft网络视图,但我想在其中显示自定义Azure B2C策略这个地方。这可能吗?

编辑2:在弄乱ADAL AuthenticationContext参数后,azquireTokenAsnyc()调用不再对策略失败。参数看起来像这样:

    var authContextConstants = {
        tenant: "[TENANT].onmicrosoft.com",
        resourceUrl: "https://login.microsoftonline.com",
        redirectUrl: "https://[REPLY_URL]",
        clientId: "[AZURE_APP_ID]",
        authority: this.resourceUrl + "/" + this.tenant,
        extraQueryParams: {
            response_mode: "form_post",
            scope: "openid offline_access",
            p: "B2C_1_[SIGN_IN_POLICY]"
        }
    };

我现在的问题是弹出的webview叠加层显示为空白。我设法跟踪到this ADAL source file(在android上测试),它使用" / oauth2 / authorize"而不是" oauth2 / v2.0 / authorize"正如B2C Oauth2 Docs

所述

似乎目前没有办法通过cordova插件自定义这个,因为它在源库中是硬编码的 - 我现在又被卡住了......

2 个答案:

答案 0 :(得分:1)

证明ADAL cordova插件的0.7.1 / 0.7.2-dev版本使用不符合B2C握手/ Oauth2要求的ADAL库,因此这些版本总是在代码上失败 - > B2C端点的令牌部分。

我现在分叉插件来制作This ADAL plugin B2C Patch,直到插件开发者更新插件的ADAL库

答案 1 :(得分:0)

使用ADAL Cordova Plugin Patch For B2Cangular-jwt,我们可以在Cordova / Ionic App上实施Azure AD B2C登录