这是我从运行 Worklight Server 的 WebSphere 应用程序服务器自由配置文件中收到的错误:
defaultOptions:onFailure Procedure invocation error. Runtime: The realm 'SingleStepAuthRealm' is not defined in authenticationConfig.xml.
这在我的本地服务器上运行良好。
我已将服务器自定义 WAR 文件重建并部署到服务器,然后重新启动它。
这可能是因为远程服务器的版本与我的本地服务器的版本不匹配吗?本地服务器版本为:5.0.5.20121129-1027
这是我的 authenticationConfig.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<tns:loginConfiguration xmlns:tns="http://www.worklight.com/auth/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- Licensed Materials - Property of IBM
5725-G92 (C) Copyright IBM Corp. 2006, 2012. All Rights Reserved.
US Government Users Restricted Rights - Use, duplication or
disclosure restricted by GSA ADP Schedule Contract with IBM Corp. -->
<!-- Uncomment the next element to protect the worklight console -->
<!-- <staticResources>
<resource id="worklightConsole" securityTest="WorklightConsole">
<urlPatterns>/console*</urlPatterns>
</resource>
</staticResources> -->
<!-- Sample security tests
Even if not used there will be some default webSecurityTest and mobileSecurityTest
Attention: if using <testAppAuthenticity/> test below ,<publicSigningKey> element must be added to application-descriptor.xml as well. -->
<!-- <securityTests>
<mobileSecurityTest name="mobileTests">
<testAppAuthenticity/>
<testDeviceId provisioningType="none" />
<testUser realm="myMobileLoginForm" />
</mobileSecurityTest>
<webSecurityTest name="webTests">
<testUser realm="myWebLoginForm"/>
</webSecurityTest>
<customSecurityTest name="customTests">
<test realm="wl_antiXSRFRealm" step="1"/>
<test realm="wl_authenticityRealm" step="1"/>
<test realm="wl_remoteDisableRealm" step="1"/>
<test realm="wl_anonymousUserRealm" isInternalUserID="true" step="1"/>
<test realm="wl_deviceNoProvisioningRealm" isInternalDeviceID="true" step="2"/>
</customSecurityTest>
<customSecurityTest name="WorklightConsole">
<test realm="WorklightConsole" isInternalUserID="true"/>
</customSecurityTest>
</securityTests> -->
<realms>
<realm name="SingleStepAuthRealm" loginModule="SingleStepAuthLoginModule">
<className>com.worklight.integration.auth.AdapterAuthenticator</className>
<parameter name="login-function" value="SingleStepAuthAdapter.onAuthRequired" />
<parameter name="logout-function" value="SingleStepAuthAdapter.onLogout" />
</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 -->
</realms>
<loginModules>
<loginModule name="SingleStepAuthLoginModule">
<className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
</loginModule>
<!-- For websphere -->
<!-- loginModule name="WASLTPAModule">
<className>com.worklight.core.auth.ext.WebSphereLoginModule</className>
</loginModule -->
</loginModules>
</tns:loginConfiguration>
更新:
感谢奥兰多的回答,我能够辨别服务器版本:
服务器版本:5.0.5.20121130-0919
本地版本:5.0.5.20121129-1027
版本(可能是内部版本号,不确定 WL 版本如何工作)不同;但是,我怀疑次要版本不匹配不是问题。
这是我迄今为止尝试调试此问题的方法:
我按照 worklight 文档中的步骤构建服务器定制文件并将其上传到服务器上的正确目录。
您可以在这篇 IC 文章的“部署项目”标题下找到这些步骤。
我打开 WAR 文件,发现 authenticationConfig.xml 不在其中!所以,我想我会手动将 XML 推送到它驻留在本地服务器上的同一个文件夹中。在我的例子中,这个目录是:/opt/IBM/Worklight/server/wlp/usr/servers/worklightServer/worklight.home/app_name/conf
我认为这可能是权限问题,所以我在文件上设置了 +rwx 。还是没有骰子。
也许它正在寻找我本地服务器上该目录中的其他文件?我上传了所有这些并再次尝试了权限。没运气。
在每个步骤之后,我还重新启动了服务器(在第 4 步的情况下,重新启动了两次,一次使用默认权限,一次使用完整权限)。