2

这是我从运行 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 版本如何工作)不同;但是,我怀疑次要版本不匹配不是问题。

这是我迄今为止尝试调试此问题的方法:

  1. 我按照 worklight 文档中的步骤构建服务器定制文件并将其上传到服务器上的正确目录。

    您可以在这篇 IC 文章的“部署项目”标题下找到这些步骤。

  2. 我打开 WAR 文件,发现 authenticationConfig.xml 不在其中!所以,我想我会手动将 XML 推送到它驻留在本地服务器上的同一个文件夹中。在我的例子中,这个目录是:/opt/IBM/Worklight/server/wlp/usr/servers/worklightServer/worklight.home/app_name/conf

  3. 我认为这可能是权限问题,所以我在文件上设置了 +rwx 。还是没有骰子。

  4. 也许它正在寻找我本地服务器上该目录中的其他文件?我上传了所有这些并再次尝试了权限。没运气。

  5. 在每个步骤之后,我还重新启动了服务器(在第 4 步的情况下,重新启动了两次,一次使用默认权限,一次使用完整权限)。

4

2 回答 2

3

首先获取此处概述的(远程)服务器版本:

Worklight 服务器(所有版本)

如果服务器已启动并正在运行,您可以通过以下步骤找到版本。否则继续下一节。

  • 确保您的 Worklight 服务器正在运行。
  • 打开 Worklight 控制台 (http://:/worklight/console)。
  • 点击屏幕右上角的“关于”链接。
  • 将显示一个弹出窗口,显示当前服务器版本

如果服务器没有运行,您可以通过以下步骤找到版本。

  • 找到 Worklight Server 的安装目录(例如:C:\IBM\Worklight)
  • 导航到 \WorklightServer。
  • 使用任何支持“zip”格式的存档工具打开文件“worklight-jee-library.jar”。
  • jar 展开后,打开“conf/worklight.properties”文件。
  • 在该文件中,版本号由“build.version”属性定义。
于 2013-08-21T16:10:45.950 回答
1

您是否尝试过这个问题中的建议?

基本上:

您在应用程序服务器中部署了多少个 .war 文件?
在 Worklight 5 中只能有 1 个。确保是这种情况。

于 2013-09-04T22:09:45.407 回答