我目前正在使用 Header Authentication 身份验证/登录模块开发 Worklight 6.0 POC。尝试在应用程序中访问受保护的适配器时,我在控制台中收到以下错误:
403 (Forbidden)
TypeError: Object # has no method 'handleFailure'
我在通过 chrome 中的控制台测试应用程序的 Web 版本时收到此错误。
在 iPhone 版本的应用程序上进行测试时,我也遇到了类似的错误。 例外。TypeError:“未定义”不是函数(评估“handler.handleFailure(wlFailure [realm])”)
查看 AbstractChallengeHandler 类/函数中的 wlclient.js 文件,我没有看到用于解释上述错误的 handleFailure 函数定义。我认为应该有一个handleFailure 的定义,或者是否需要更多配置来使用标头身份验证保护适配器资源?
我问这个问题的原因是,我试图在我创建的客户端“ChallengeHandler”中测试我的逻辑,我试图理解为什么我无法通过正常的客户端challenge.isCustomResponse/challenge.handleChallenge 通信。
代码/配置如下
任何建议/意见表示赞赏
身份验证配置.xml
<securityTests>
<webSecurityTest name="WebSecurityTest">
<testUser realm="HeaderAuthRealm"/>
</webSecurityTest>
<mobileSecurityTest name="MobileTest">
<testUser realm="HeaderAuthRealm"/>
<testDeviceId provisioningType="none"/>
</mobileSecurityTest>
<customSecurityTest name="HeaderAuth-securityTest">
<test realm="HeaderAuthRealm" isInternalUserID="true" />
</customSecurityTest>
</securityTests>
<realms>
<realm name="HeaderAuthRealm" loginModule="HeaderLoginModule">
<className>com.worklight.core.auth.ext.HeaderAuthenticator</className>
</realm>
</realms>
<loginModules>
<loginModule name="HeaderLoginModule">
<className>com.worklight.core.auth.ext.HeaderLoginModule</className>
<parameter name="user-name-header" value="HeaderAuth_USER"/>
</loginModule>
</loginModules>
HeaderAuthRealmChallenge.js
var HeaderAuthRealmChallenger = WL.Client.createChallengeHandler("HeaderAuthRealm");
HeaderAuthRealmChallenger.isCustomResponse = function(response) {
if (response.responseJSON.isSuccessful) {
WL.Logger.info('AUTHENTICATION SUCCESS =).......');
return false;
}else{
return true;
}
};
HeaderAuthRealmChallenger.handleChallenge = function(response){
WL.Logger.info('AUTHENTICATION FAILED =(.......');
$('#login').css('display','block');
};