IBM Worklight 5.0.5 - 未在authenticationConfig.xml中定义Realm

时间:2013-08-15 21:08:16

标签: ibm-mobilefirst websphere-liberty

以下是我从运行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文档中的步骤构建并将服务器自定义文件上传到服务器上的正确目录。

    您可以在标题&#34;部署项目&#34;标题下找到这些步骤in this IC article

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

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

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

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

2 个答案:

答案 0 :(得分:3)

首先按照概述here获取(远程)服务器版本:

Worklight Server(所有版本)

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

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

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

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

答案 1 :(得分:1)

您是否尝试过建议in this question

基本上:

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