如何在web.xml OSGI WAB自由角色映射中映射admin auth约束

Dya*_*nth 5 java security websphere-liberty wab

我正在构建一个单独的admincenter工具,需要管理员角色才能访问.如何在auth-constraint中指定它web.xml.

我试过下面,它不起作用

<security-constraint>
    <web-resource-collection>
        <web-resource-name>commonlogin-secure-resources</web-resource-name>
        <url-pattern>/rest/readyToLand</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>test</role-name>
        <role-name>Administrator</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>
Run Code Online (Sandbox Code Playgroud)

server.xml

<basicRegistry>
    <user name="admin" password="adminPassword"/>
</basicRegistry>    
<administrator-role>
    <user>admin</user>
</administrator-role>
Run Code Online (Sandbox Code Playgroud)

登录后,如果我尝试访问此URL,则表示我无权访问它.我需要在某处做绑定吗?

添加IBM-Authorization-Roles: com.ibm.ws.management到MANIFEST.MF 后,我可以使用admin角色访问它,但不能使用test角色访问它.配置有什么问题.如何在osgi包中进行角色映射?

Dya*_*nth 1

添加web.xml额外的角色allAuthenticatedUsers以允许他们与管理员用户一起使用。在 ibm 文档中没有找到太多有关 OSGI 捆绑包安全性的信息。但它奏效了。

   <security-constraint>
        <web-resource-collection>
            <url-pattern>/rest/readyToLand</url-pattern>
            <url-pattern>/LoginSuccess.jsp</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
        </web-resource-collection>
        <auth-constraint>
            <role-name>Administrator</role-name>
            <role-name>allAuthenticatedUsers</role-name>
        </auth-constraint>
    </security-constraint>
    <security-role id="SecurityRole_1">
        <description>Administrator role</description>
        <role-name>Administrator</role-name>
    </security-role>
    <security-role id="SecurityRole_2">
        <description>Any Role</description>
        <role-name>allAuthenticatedUsers</role-name>
    </security-role>
Run Code Online (Sandbox Code Playgroud)

我想我不需要<role-name>Administrator</role-name>。但request.isUserInRole('Administrator')无论如何都是真实的。

更新了 任何情况下,我都无法识别具有上述配置的应用程序中的管理员和测试用户。只有IBM-Authorization-Roles: com.ibm.ws.management管​​理员可以被识别 -request.isUserInRole('Administrator')将起作用。但request.isUserInRole('test')即使用户使用该测试角色登录并能够访问该 URL,也不会发生这种情况。

这很奇怪 - 它允许访问,但是当我检查角色是什么时,它不起作用。IBM - Liberty 代码 (17.0.0.4) 中似乎存在问题。但不确定。