Azure AD B2C登录Cordova/Ionic应用程序

Jos*_* N. 5 cordova azure-active-directory adal ionic-framework azure-ad-b2c

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

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

我已经尝试过使用ADAL cordova插件,但据我所知,没有办法为新的Web视图添加自定义策略.我尝试在acquireTokenAsync()调用中添加"p = B2C_1_sign-in-up-policy"作为extraQueryParameters选项,但这给了我一个MethodNotAllowedHttpException.

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

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

提前致谢

编辑:为了澄清,我有ADAL正在努力突然从ADAL登录默认的Microsoft Web视图,但我想显示一个自定义的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]"
        }
    };
Run Code Online (Sandbox Code Playgroud)

我现在的问题是弹出的webview叠加层显示为空白.我设法跟踪这个ADAL源文件(在android上测试),它使用"/ oauth2/authorize"而不是"oauth2/v2.0/authorize",如B2C Oauth2 Docs所述

似乎目前没有办法通过cordova插件自定义这个,因为它在源库中是硬编码的 - 我现在再次陷入困境......

Jos*_* N. 1

事实证明,ADAL cordova 插件的 0.7.1 / 0.7.2-dev 版本使用的 ADAL 库不满足 B2C 握手/Oauth2 要求,因此这些版本始终在 B2C 端点的代码 -> 令牌部分失败。

我暂时分叉了该插件以制作此 ADAL 插件 B2C 补丁,直到插件开发人员更新插件的 ADAL 库