如何使用SAML ECP配置文件配置Keycloak

时间:2016-11-24 09:37:15

标签: single-sign-on saml saml-2.0 keycloak

我正在使用SAML为运行tomcat的Web服务器实现SSO身份验证流程。使用POST或Redirect绑定时,一切正常,但是从我读过的内容来看,我需要在REST API前面支持SAML身份验证,我还需要配置和使用ECP配置文件。

首先纠正我,如果我错了,但ECP流应该是这样的:

  1. 客户端访问SP REST API
    • 客户知道他需要进行身份验证,因此他设置了所需的ECP标头(Accept: application/vnd.paos+xmlPAOS: urn:liberty:paos:2003-08;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp
  2. SP认为客户端未经过身份验证,并返回包含PAOS请求的SOAP Envelop。
  3. 客户负责将此信息发送至其ECP消费者服务的相应IdP。
  4. IdP质疑客户端进行身份验证
  5. IdP以另一个SOAP Envelop的形式返回一个响应,其中包含saml Response
  6. 客户必须将此回复发送至SP的 ECP / SOAP断言消费者服务
  7. 问题是所有这一切都有效,直到第6步。在这一步我有问题,响应信封的Body包含一个Destination属性,它指向 POST断言消费者服务 SP。此目标属性由keycloak设置,并且与我要发送响应的实际ECP服务不匹配。我们使用的SAML库是opensaml,它根据此Destination属性检查请求URI,如果它们不匹配则抛出异常org.opensaml.xml.security.SecurityException: SAML message intended destination endpoint did not match recipient endpoint

    我理解为什么会抛出此异常,但无法理解如何使用SP的ECP / SOAP服务配置Keycloak。在Keycloak的管理控制台中,我只能为SSO POST / Redirect和SLO POST / Redirect配置URL,但没有关于ECP的配置。

    我目前正在配置另一个IdP,但我真的想确保Keycloak也可以作为我们解决方案的受支持服务器。

1 个答案:

答案 0 :(得分:-1)

难道你不能只阅读paos:请求responseConsumerURL并将idp响应发布到该网址?

至少,这就是我设法做到的。