在Enterprise服务器中部署我的Worklight (v6.2.0.01)应用程序后,我将面临以下问题。这个问题只表现在移动web应用环境中。
值得注意的是,同一应用程序在相同的环境中运行良好,在本地开发服务器(也基于Worklight 6.2.0.01)。
控制台错误:
[Error] unknown challenge arrived, cannot process realm wl_deviceNoProvisioningRealm challenge.
__log (worklight.js, line 4879)
(anonymous function) (worklight.js, line 5237)
executeChallenge (worklight.js, line 8783)
checkResponseForChallenges (worklight.js, line 8692)
onWlFailure (worklight.js, line 3411)
(anonymous function) (worklight.js, line 950)
respondToReadyState (worklight.js, line 1172)
onStateChange (worklight.js, line 1105)
(anonymous function) (worklight.js, line 950)屏幕错误:
处理来自应用程序的请求时遇到错误。
authenticationConfig.xml:
<!-- Licensed Materials - Property of IBM
5725-I43 (C) Copyright IBM Corp. 2006, 2013. All Rights Reserved.
US Government Users Restricted Rights - Use, duplication or
disclosure restricted by GSA ADP Schedule Contract with IBM Corp. -->
<staticResources>
<resource id="subscribeServlet" securityTest="SubscribeServlet">
<urlPatterns>/subscribeSMS*;/receiveSMS*;/ussd*</urlPatterns>
</resource>
</staticResources> <securityTests>
<mobileSecurityTest name="SampleApp">
<testDeviceId provisioningType="none" />
<testUser realm="SampleAppRealm" />
<testDirectUpdate mode="perSession" />
</mobileSecurityTest>
<customSecurityTest name="SubscribeServlet">
<test realm="SubscribeServlet" isInternalUserID="true"/>
</customSecurityTest>
</securityTests>
<realms>
<realm loginModule="SampleAppLoginModule" name="SampleAppRealm">
<className>com.worklight.integration.auth.AdapterAuthenticator</className>
<parameter name="login-function" value="AuthenticationAdapter.onAuthRequired" />
<parameter name="logout-function" value="AuthenticationAdapter.onLogout" />
</realm>
<!-- <realm name="SampleAppRealm" loginModule="StrongDummy">
<className>com.worklight.core.auth.ext.FormBasedAuthenticator</className>
</realm> -->
<realm name="SubscribeServlet" loginModule="rejectAll">
<className>com.worklight.core.auth.ext.HeaderAuthenticator</className>
</realm>
<!-- For client logger -->
<!-- <realm name="LogUploadServlet" loginModule="StrongDummy">
<className>com.worklight.core.auth.ext.HeaderAuthenticator</className>
</realm -->
<!-- For websphere -->
<!-- realm name="WASLTPARealm" loginModule="WASLTPAModule">
<className>com.worklight.core.auth.ext.WebSphereFormBasedAuthenticator</className>
<parameter name="login-page" value="/login.html"/>
<parameter name="error-page" value="/loginError.html"/>
</realm -->
<!-- For User Certificate Authentication -->
<!-- realm name="wl_userCertificateAuthRealm" loginModule="WLUserCertificateLoginModule">
<className>com.worklight.core.auth.ext.UserCertificateAuthenticator</className>
<parameter name="dependent-user-auth-realm" value="WASLTPARealm" />
<parameter name="pki-bridge-class" value="com.worklight.core.auth.ext.UserCertificateEmbeddedPKI" />
<parameter name="embedded-pki-bridge-ca-p12-file-path" value="/opt/ssl_ca/ca.p12"/>
<parameter name="embedded-pki-bridge-ca-p12-password" value="capassword" />
</realm -->
<!-- For Trusteer Fraud Detection -->
<!-- Requires acquiring Trusteer SDK -->
<!-- realm name="wl_basicTrusteerFraudDetectionRealm" loginModule="trusteerFraudDetectionLogin">
<className>com.worklight.core.auth.ext.TrusteerAuthenticator</className>
<parameter name="rooted-device" value="block"/>
<parameter name="device-with-malware" value="block"/>
<parameter name="rooted-hiders" value="block"/>
<parameter name="unsecured-wifi" value="alert"/>
<parameter name="outdated-configuration" value="alert"/>
</realm -->
</realms>
<loginModules>
<loginModule name="SampleAppModule">
<className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
</loginModule>
<!-- <loginModule name="StrongDummy">
<className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
</loginModule>
<loginModule name="requireLogin">
<className>com.worklight.core.auth.ext.SingleIdentityLoginModule</className>
</loginModule> -->
<loginModule name="rejectAll">
<className>com.worklight.core.auth.ext.RejectingLoginModule</className>
</loginModule>
<!-- Required for Trusteer - wl_basicTrusteerFraudDetectionRealm -->
<!-- loginModule name="trusteerFraudDetectionLogin">
<className>com.worklight.core.auth.ext.TrusteerLoginModule</className>
</loginModule-->
<!-- For websphere -->
<!-- loginModule name="WASLTPAModule">
<className>com.worklight.core.auth.ext.WebSphereLoginModule</className>
</loginModule -->
<!-- Login module for User Certificate Authentication -->
<!-- <loginModule name="WLUserCertificateLoginModule">
<className>com.worklight.core.auth.ext.UserCertificateLoginModule</className>
</loginModule> -->
<!-- For enabling SSO with no-provisioning device authentication -->
<!-- <loginModule name="MySSO" ssoDeviceLoginModule="WLDeviceNoProvisioningLoginModule">
<className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
</loginModule> -->
<!-- For enabling SSO with auto-provisioning device authentication -->
<!-- <loginModule name="MySSO" ssoDeviceLoginModule="WLDeviceAutoProvisioningLoginModule">
<className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
</loginModule> -->
</loginModules>
发布于 2014-11-17 17:36:02
您已经提到您的应用程序在移动web应用程序环境中使用。在此环境中,应用程序是从Worklight Server提供的,并使用操作系统的移动浏览器应用程序(mobile、mobile等)显示。
您所得到的错误中提到的wl_deviceNoProvisioningRealm测试是为了用于https://www.ibm.com/developerworks/community/blogs/worklight/entry/understanding_predefined_worklight_authentication_realms_and_security_tests11?lang=en,而不是在移动web应用程序中。
在您的例子中,您使用的是预定义的mobileSecurityTest。此预定义的安全测试默认检查用于wl_deviceNoProvisioningRealm。
虽然我不清楚你为什么要以你描述的方式得到这个错误,但我认为你应该做的是:
webSecurityTest代替,因为它不包括wl_deviceNoProvisioningRealm,并且适合于web环境,比如您的应用程序.wl_deviceNoProvisioningRealm测试。然后,在应用程序描述符. app中,您需要将其专门应用于移动web应用程序环境元素。了解有关安全测试的更多信息,请参见:了解预定义的Worklight身份验证领域和安全测试
发布于 2014-12-10 18:53:09
这个问题与IBM有关,在提出PMR之后,他们为Eclipse提供了包含修复和额外32个修复的更新。
https://stackoverflow.com/questions/26975181
复制相似问题