【问题标题】:IBM Worklight : Multiple Realm in security test not working as expectedIBM Worklight:安全测试中的多个领域未按预期工作
【发布时间】:2015-02-18 12:12:10
【问题描述】:

我在使用 Multiple 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>

    <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>

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

【问题讨论】:

  • mode="perSession" 在这里有什么影响?这些属性确实存在,否则我的适配器将不会被部署!。此外,如果我删除此属性也不起作用。
  • @nsm 您运行的是哪个版本的 Worklight?
  • @ChevyHungerford 我正在使用 IBM Mobile First 平台基础 6.3(开发者版)
  • 抱歉,在一次会议上回复晚了。您可以向我们展示任何服务器日志输出吗?
  • @Chevy:我没有放任何服务器日志。但是当我在客户端调试应用程序时,在挑战处理程序 .js 文件中有 2 个处理程序,每个处理程序用于 authConfig 中的一个领域。因此,无论哪个领域首先在 authConfig 中定义,该特定领域的挑战处理程序只会被调用!永远不会调用第二个挑战处理程序。不知道我错过了什么。

标签: ibm-mobilefirst worklight-adapters


【解决方案1】:

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

解决方案是为每个领域设置单独的登录模块。将 MultipleRealmLoginModule 克隆到 MultipleRealmLoginModule2 并在 RealmAdapterRealm2 中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 2020-10-30
    相关资源
    最近更新 更多