我想使用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相同的行为吗?
非常感谢你的帮助。