3 回答
![?](http://img1.sycdn.imooc.com/54586431000103bb02200220-100-100.jpg)
TA贡献1830条经验 获得超3个赞
您是否尝试过更改 web.xml 中元素的顺序(例如,将过滤器定义放在servlet 定义之前)?
不确定它会起作用,但文档说:“链中过滤器的顺序与过滤器映射出现在 Web 应用程序部署描述符中的顺序相同”
对于 servlet 和过滤器之间的顺序,这个原则也可能适用......
![?](http://img1.sycdn.imooc.com/54584d6100015f5802200220-100-100.jpg)
TA贡献1803条经验 获得超3个赞
我知道这是 2 岁,但我找到了解决这个问题的解决方案:将您的适配器更改为 servlet 过滤器,我的是 jboss/wildfly,然后添加到过滤器下方的 web.xml 以更改请求或响应。在 jboss/wildfly 的情况下,身份验证发生在阀门中,因此身份验证发生在任何过滤器执行之前。完成此操作后,您可以控制 keycloak 何时开始工作并将过滤器放在它之前。
web.xml
<filter>
<filter-name>Keycloak Filter</filter-name>
<filter-class>org.keycloak.adapters.servlet.KeycloakOIDCFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Keycloak Filter</filter-name>
<url-pattern>/restricted/*</url-pattern>
<url-pattern>/restricted/</url-pattern>
</filter-mapping>
将适当的版本添加keycloak-servlet-filter-adapter到您的 pom,并从 web.xml 中删除所有其他安全约束、身份验证方法等。
添加回答
举报