我正在尝试在Apache Tomcat 9.0.24上设置SAML身份验证。我正在使用应该针对KeyCloak独立服务器(v 7.0.0)进行身份验证的keycloak-saml-tomcat-adapter-dist-7.0.0插件。
我已经在web.xml中设置了通常的角色映射,例如:
<security-role>
<role-name>role0</role-name>
</security-role>
<security-constraint>
<display-name>Security constraint for the /ktc folder</display-name>
<web-resource-collection>
<web-resource-name>/ktc page</web-resource-name>
<url-pattern>/ktc</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>role0</role-name>
</auth-constraint>
</security-constraint>
泊坞窗机器正在互相发现,当我尝试访问受保护的资源/ ktc时,尝试被拦截,我被定向到keycloak服务器进行登录。如果我提供了无效的凭据,则登录尝试将被正确拒绝。此外,如果我提供了有效的凭据,我将被重定向回我的Tomcat网站。
不幸的是,Tomcat在这里没有将我传递给受保护的资源。如果我再次尝试访问它,则第二次将我重定向到屏幕上,但仅在屏幕上快速闪烁了一次,而没有向我提供登录表单。由此,我怀疑我实际上已通过身份验证,但未获得预期的角色分配。 keycloak服务器事件日志也显示我已登录,但他们没有告诉您如何成功分配了哪些角色。
我做错了什么?
答案 0 :(得分:0)
在KeyCloak身份验证服务器上配置的POST端点必须以/ saml结尾,并且不能指向Tomcat内部现有servlet的任何POST端点。只有这样,KeyCloak阀门才会拦截它。