在YAML中配置的Wildfly Swarm安全约束与WEB.XML中的行为不同

时间:2018-01-08 16:50:12

标签: java security yaml java-security wildfly-swarm

我想使用Keycloak作为我的基于Wildfly swarm的应用程序的安全提供程序。只有一种资源需要"公共访问" (/ api / systemInfo)... Keycloak应保护所有其他资源。如果我将它添加到web.xml(在src / main / WEB-INF中),web.xml如下所示:

<web-app>
<module-name>amigo</module-name>
<security-constraint>
    <web-resource-collection>
        <url-pattern>/api/systemInfo</url-pattern>
    </web-resource-collection>
</security-constraint>
<security-constraint>
    <web-resource-collection>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>KEYCLOAK</auth-method>
    <realm-name>amigo</realm-name>
</login-config>

就像那样,一切都按预期工作。我无需登录即可访问/ api / systemInfo。

但由于我的所有配置都在default-stages.yml(以及依赖于yml文件的环境)中,我希望也有安全约束。我的default-stages.yml如下所示:

swarm:
  context:
    path: /
  deployment:
    app.war:
      web:
        login-config:
          auth-method: KEYCLOAK
        security-constraints:
          - url-pattern: /api/systemInfo
          - url-pattern: /*
            roles: [admin]

在我看来,这应该像第一个片段(web.xml)。但它没有。似乎(/ api / systemInfo)的规则被忽略,或者至少它没有按预期工作。在/ api / systemInfo上我得到403,而在所有其他请求中,我得到了预期的重定向到Keycloak Login。

有人知道我需要调整什么来获得与使用web.xml相同的行为吗?

非常感谢你的帮助。

0 个答案:

没有答案