Ibm mobilefirst IBM Worklight:安全测试中的多个域未按预期工作

Ibm mobilefirst IBM Worklight:安全测试中的多个域未按预期工作,ibm-mobilefirst,worklight-adapters,Ibm Mobilefirst,Worklight Adapters,我在检查基于适配器的多域身份验证的安全测试时遇到问题。 我在authenticationConfig.xml中有以下配置 <customSecurityTest name="RealmAdapter-securityTest"> <test isInternalUserID="true" realm="RealmAdapterRealm" step="1" mode="perRequest" /> <test realm="

我在检查基于适配器的多域身份验证的安全测试时遇到问题。 我在authenticationConfig.xml中有以下配置

    <customSecurityTest name="RealmAdapter-securityTest">
        <test isInternalUserID="true" realm="RealmAdapterRealm" step="1" mode="perRequest" />
        <test  realm="RealmAdapterRealm2" step="2" mode="perRequest"/>

    </customSecurityTest>
</securityTests>



com.worklight.integration.auth.AdapterAuthenticator
com.worklight.integration.auth.AdapterAuthenticator


com.worklight.core.auth.ext.NonValidatingLoginModule

问题是只有第一个领域被调用!在我的RealmAdapterRealm成功登录后的登录功能中,我正在设置用户会话对象并将authrequired返回为false。但是我的第二个领域没有被调用。如果我将第二个领域(RealmAdapterRealm2)更改为步骤=1,将第一个领域(RealmAdapterRealm)更改为步骤=2,那么第一个领域也在工作。即RealmAdapterRealm2在工作,RealmAdapterRealm永远不会被调用。
请帮助我实现这一点,因为我是IBM Worklight的新手

问题是您在两个领域使用相同的登录模块。登录模块是维护用户身份的实体。在RealmAdapterRealm中验证后,MultipleRealmLoginModule将创建用户标识。然后,auth framework正在检查您是否已经在RealmAdapterRealm2中进行了身份验证。此检查意味着转到RealmAdapterRealm2中定义的登录模块,询问该模块是否创建了用户标识。而且,由于您对这两个领域都使用multiplerelamloginmodule,一旦您通过其中一个领域的身份验证,这两个领域都将具有用户身份


解决方案是每个领域有单独的登录模块。将MultipleRealmLoginModule克隆到MultipleRealmLoginModule 2,并在RealmAdapterRealm2中使用它。

mode=“perSession”在这里有什么关系?这些属性确实存在,否则我的适配器将无法部署!。此外,如果我删除这个属性也不起作用。@ NSM你正在运行什么版本的工作灯?@ CheyyunHungFord.我正在使用IBM移动第一平台6.3(开发者版),抱歉在会议上迟到了。有什么服务器日志输出可以给我们看吗?@Chevy:我没有放任何服务器日志。但是,当我在客户端调试应用程序时,在challengehandler.js文件中,authConfig中的一个领域中有两个处理程序。因此,在authConfig中,哪个领域是首先定义的,该领域的质询处理程序只会被调用!从未调用第二个质询处理程序。不知道我错过了什么。
    <realm name="RealmAdapterRealm" loginModule="MultipleRealmLoginModule">
        <className>com.worklight.integration.auth.AdapterAuthenticator</className>
        <parameter name="login-function" value="RealmAdapter.doLogin" />
        <parameter name="logout-function" value="RealmAdapter.onLogout" />
    </realm>
    <realm name="RealmAdapterRealm2" loginModule="MultipleRealmLoginModule">
        <className>com.worklight.integration.auth.AdapterAuthenticator</className>
        <parameter name="login-function" value="RealmAdapter.getText" />


    </realm>
    <loginModule name="MultipleRealmLoginModule">
        <className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
    </loginModule>