【问题标题】:Problems with cordova-plugin-ms-adal and iOS13cordova-plugin-ms-adal 和 iOS13 的问题
【发布时间】:2020-05-10 04:40:04
【问题描述】:

我们在 iOS13 上使用 cordova-plugin-ms-adal 进行 AD Azure 身份验证时遇到问题。这是来自一个科尔多瓦应用程序,通过应用商店打包和安装。它在 iOS12 和 Android 上运行良好,但在 iOS13 上它静默失败,导致“空白页”,因为没有触发任何回调。

以下是示例代码,来自插件文档页面的说明。 'acquireTokenSilentAsync' 和 'acquireTokenAsync'(如果直接调用)都失败但不会触发任何错误回调。

我知道 Microsoft 不再支持 ADAL cordova 插件(自 2019 年 3 月起),但我正在尝试确定该插件是否可以以某种方式与 iOS13 一起使用,或者我们是否必须切换到其他一些机制(例如 MSAL) ?

简而言之,有没有人确切地知道 cordova-plugin-ms-adal 插件是否可以与 iOS13 一起使用,用于打包的 cordova 应用程序,如果不能,什么是好的替代品?

// Shows user authentication dialog if required
function authenticate(authCompletedCallback, errorCallback) {
  var authContext = new Microsoft.ADAL.AuthenticationContext(authority);
  authContext.tokenCache.readItems().then(function (items) {
    if (items.length > 0) {
        authority = items[0].authority;
        authContext = new Microsoft.ADAL.AuthenticationContext(authority);
    }
    // Attempt to authorize user silently
    authContext.acquireTokenSilentAsync(resourceUri, clientId)
    .then(authCompletedCallback, function () {
        // We require user credentials so triggers authentication dialog
        authContext.acquireTokenAsync(resourceUri, clientId, redirectUri)
        .then(authCompletedCallback, errorCallback);
    });
  });
};

authenticate(function(authResponse) {
  console.log("Token acquired: " + authResponse.accessToken);
  console.log("Token will expire on: " + authResponse.expiresOn);
}, function(err) {
  console.log("Failed to authenticate: " + err);
});

【问题讨论】:

    标签: cordova ios13 adal msal msal.js


    【解决方案1】:

    由于azure-activedirectory-library-for-cordova 处于存档状态并且不再受支持,因此最好将您的应用程序移至microsoft-authentication-library-for-js。此外,您可以在存储库中找到此插件的 AngularJS/Angular 包装版本。此实现具有与 Cordova 版本类似的方法。唯一的区别是您不需要将其添加为 Cordova 插件,而是添加为 JavaScript 依赖项。

    【讨论】:

    • 等一下,然后你就无法访问操作系统的共享 adal 缓存了...?
    【解决方案2】:

    在设备就绪功能中使用它,它会正常工作。

    例子:-

    document.addEventListener("deviceready", onDeviceReady, false);
    
    function onDeviceReady() {
      Call your authentication code
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 2018-05-13
      • 2019-06-11
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      相关资源
      最近更新 更多