ADAL Cordova插件无法在ios上保留令牌

时间:2016-09-21 14:22:10

标签: cordova-plugins adal

我仍然是移动应用开发领域的新手,如果我没有提供足够的信息,请原谅我,可能是因为我对其相关性缺乏了解。我会根据要求编辑更多信息。

以下是我用于在Windows 7 64位环境中构建应用程序的内容:

AngularJS 1.0
Phonegap Build 6.3.0 (cloud version)
cordova-android 5.2.1 (as shown on Phonegap build)
cordova-ios 4.2.0 (as shown on Phonegap build)
azure-activedirectory-library-for-cordova version 0.7.1

我正在测试:

Android phone Samsung Galaxy SCH-I545 os version 5.0.1
iPhone 6S Plus os version 9.3.5

Android使用ADAL插件0.7.1一切顺利。然而,在iPhone上,即使我第一次已经通过身份验证,它仍然会返回登录屏幕以对我们的AD FS进行身份验证。我怀疑令牌没有存储在缓存中,这就是为什么acquireTokenAsync会被调用的原因?我仍然试图通过MAC来进一步排除故障。

然后,我更新到ADAL插件0.8.0,看看是否可以解决我的问题,但现在Android停止工作,我收到了这个错误:

DEVELOPER_AUTHORITY_IS_NOT_VALID_INSTANCE

我通过在0.7.1和0.8.0上使用开发人员工具进行了调试,并且我在版本0.8.0中看到没有令牌返回到acquireTokenAsync方法中。切换回0.7.1并再次使用Android。

有人可以指导我在iPhone和Android上导致此问题的原因吗?也许我错过了其他设置或文件?我更新ADAL插件的方法是替换插件下的cordova-plugin-ms-adal文件夹,并将我的config.xml文件修改为spec =“~0.8.0”,这应该足够了吗?

*更新cordova-android * 我终于通过关闭 validateAuthority

在我的Android设备上运行0.8.0
var context = new Microsoft.ADAL.AuthenticationContext(authority,false);

我认为这是因为我正在使用AD FS(在adal-for-objc下的ADErrorCodes.h中找到此评论):

    /*! The passed in authority URL does not pass validation, if you're trying to use ADFS directly you must disable authority validation. */
    /*! An error was raised during the process of validating the authorization authority. */
    AD_ERROR_DEVELOPER_AUTHORITY_VALIDATION = 101

*有关cordova-ios的更新* 在Safari开发人员工具中调试,在调用本机方法之后我没有tokenCacheItems。

bridge.executeNativeMethod('tokenCacheReadItems',[this.authContext.authority, this.authContext.validateAuthority])
.then(function (tokenCacheItems) {
    tokenCacheItems.forEach(function (item) {
        result.push(new TokenCacheItem(item));
    });
    d.resolve(result);
}, function(err) {
    d.reject(err);
});

我已经花了将近一个星期的时间,我真的很感激这个问题的任何帮助。

0 个答案:

没有答案