Проблемы с cordova-plugin-ms-adal и iOS13 - PullRequest
1 голос
/ 23 января 2020

У нас проблемы с аутентификацией AD Azure с использованием cordova-plugin-ms-adal на iOS13. Это из приложения Cordova, упакованного и установленного через магазин приложений. Он отлично работает на iOS12 и Android, но на iOS13 он молча завершается сбоем, в результате чего появляется «пустая страница», так как ни один из обратных вызовов не запускается.

Ниже приведен пример кода со страницы документации плагина для иллюстрации , Обе команды acquTokenSilentAsyn c и acquTokenAsyn c (если вызываться напрямую) завершаются с ошибкой, но не вызывают никаких обратных вызовов.

Я знаю, что плагин ADAL cordova больше не поддерживается Microsoft (с марта 2019), но я пытаюсь установить sh, может ли плагин каким-то образом использоваться с 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);
});

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

Поскольку azure -activedirectory-library-for-cordova находится в заархивированном состоянии и больше не поддерживается, лучше переместить ваше приложение в microsoft-authentication-library- для- js. Кроме того, вы можете найти упакованную версию AngularJS / Angular этого плагина в репозитории. Эта реализация имеет методы, аналогичные версии Cordova. Единственное отличие состоит в том, что вам не нужно добавлять его как плагин Cordova, а вместо этого как JavaScript зависимость.

0 голосов
/ 06 марта 2020

Используйте его в функции готовности устройства, оно будет работать нормально.

Пример: -

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
  Call your authentication code
}
...