3

TL; DR - 是否有一种简单的方法在离子应用上显示自定义Azure B2C注册策略?Azure AD B2C登录Cordova/Ionic App

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

我已经尝试过使用ADAL cordova plugin这个,但据我所知,没有办法为新的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]" 
     } 
    }; 

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

看来,目前没有一种通过cordova插件定制的方法,因为它是在源库中进行硬编码的 - 我现在再次卡住了......

+0

如果您只需要FB和Google登录,Ionic就拥有API - 例如,Ionic.Auth.login('google')。你为什么要使用ADAL?你想要一个额外的O365登录功能? – andrew

+0

我正尝试将Azure AD B2C登录集成到离子应用程序中。也许我太过于复杂......?我应该只是使用类似[Aerogear的科尔多瓦插件](https://github.com/aerogear/aerogear-cordova-oauth2)? –

+0

我想我真正要问的是,我如何使[Azure B2C登录](https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-overview/)工作在我的应用程序?? –

回答

1

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

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