SAML身份验证后,用户似乎未分配给角色

时间:2019-09-09 17:57:29

标签: java tomcat keycloak saml-2.0 tomcat9

我正在尝试在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服务器事件日志也显示我已登录,但他们没有告诉您如何成功分配了哪些角色。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

在KeyCloak身份验证服务器上配置的POST端点必须以/ saml结尾,并且不能指向Tomcat内部现有servlet的任何POST端点。只有这样,KeyCloak阀门才会拦截它。