为 PhoneGap 设置有效的 Azure AD uri

Setting a valid Azure AD uri for PhoneGap

我正在使用 PhoneGap 框架开发移动应用程序。对于项目的下一部分,我需要允许用户通过公司的 Windows 365 帐户进行身份验证。为此,我使用 Azure AD,the following AngularJS based library.

我已经成功地使用本地主机进行身份验证调用。然而,对于下一步,我需要使身份验证在所有移动设备上都可用。为此,我需要设置一个适当的 Uri(s),默认情况下 Android 似乎作为 file:///android_asset/ 模板提供。虽然 Azure AD 似乎将此识别为 "valid" URI,但它拒绝进行身份验证。

所以归结为我的问题。如何设置一个有效的Uri,以便在移动设备上实现认证?

附加信息: PhoneGap 是基于 HTML5 和 javascript 的-如果任何 JS 或 Jquery 类 能够在这件事上提供帮助,请随时转发。其他正在使用的库是 Jquery Mobile 和 AngularJS。 (尽管后者几乎完全用于执行身份验证)this 是我基于身份验证的示例。

ADAL js 不适用于 Cordova。为此,我们有一个 Cordova 插件可以更好地利用设备资源。请查看 http://www.cloudidentity.com/blog/2015/04/06/adal-plugin-for-apache-cordova-deep-dive/ 并告诉我们它是否满足您的需求。

经过进一步研究,我设法找到了解决身份验证问题的方法。通过 Azure 进行身份验证的问题是 Azure 需要有效的 return uri。我最初考虑过为它实施自定义 url 方案 return ,但这也被认为是无效的。

因此我们研究了更多选项。看来 Azure 确实提供了移动服务,这些服务本可以在应用程序本身内进行身份验证。但是,我们希望尽可能具有成本效益。我建议,如果您遇到类似的问题首先要调查它们,但我们就是这样做的。我希望有人会发现它有用。

我使用的方法是在公司网站上进行认证。整个内容由四 HTML 页组成 - 2 个用于登录,2 个用于注销。 (当然需要必要的 JS 文件 - 请参阅问题。)

会发生什么情况是,当浏览到这些页面之一时,您会立即被重定向到 Windows 365 以验证您自己。登录后,您将被重定向到一个页面,其中提供了应用程序所需的信息。 (但隐藏)注销时使用了类似的过程。

这个难题的最后一步是让应用程序转到此页面,然后检测身份验证何时完成。为此,我使用了一个 cordova 插件,inappbrowser。 https://github.com/apache/cordova-plugin-inappbrowser

根据事件 url,我可以让应用程序检测何时完成身份验证(或完成注销)并采取相应行动。