如何在Spring Security SAML示例(ECP配置文件)中获取用户信息

时间:2015-08-20 09:16:36

标签: spring-saml

目前,我使用spring-security-saml2-sample项目(V1.0.1)作为SP,而Shibboleth作为IdP使用。我已经实现了Web SSO配置文件并尝试编写ECP客户端以使ECP配置文件正常工作。但是,我在Spring security saml中找到了有关ECP配置文件的有限文档(参考文档第10.4章)。

我在github中找到了两个有用的ECP客户端示例:

github.com/spaetow/ShibbolethECPAuthClient

github.com/DARIAH-DE/shib-http-client

在SP的元数据生成器中启用PAOS绑定和“ecpEnabled”之后,我写了一些示例ECP客户端代码,参考上面两个项目,主要流程是:

  1. 使用PAOS相关标题向“localhost:8080 / spring-security-saml2-sample / saml / login”发送获取请求。
  2. 获取响应(SAML请求)并生成SAML信封。
  3. 使用新生成的SAML Envelope发布到Shibboleth IdP(https://exampleIDP/idp/profile/SAML2/SOAP/ECP),并在授权标头中使用用户名/密码(基本身份验证)。
  4. 使用SAML断言(也是SAML信封)进行Shibboleth身份验证和响应。
  5. 将SAML断言(信封)发送到SP:“localhost:8080 / spring-security-saml2-sample / saml / SSO”并获得响应。
  6. 我认为我在前四个步骤中取得了成功,Shibboleth可以对用户进行身份验证并发送SAML响应。但是我在第五步遇到了一些问题。甚至一些例子在第4步结束。

    我发现,spring security saml获得了第5个请求,并尝试像WebSSO配置文件那样验证SAML响应。逻辑位于“org.springframework.security.saml.SAMLProcessingFilter”中。解析saml响应并获取身份验证后,响应将重定向到默认目标URL“/”。逻辑在AbstractAuthenticationTargetUrlRequestHandler.handle(req,resp,authn)中。所以,我只能在ECP客户端获得302 HTTP响应。

    以下是我的问题:

    1. 我想在第5步获取用户信息,是否必须编写另一个过滤器而不是“SAMLProcessingFilter”来发送身份验证作为响应?或者还有其他方法(我认为ECP客户端无法解析步骤4中收到的SAML断言)?

    2. 在这种情况下,我的ECP客户端非常喜欢“Rest客户端”,因为我没有在我的代码中记录任何cookie。因此,在第5步(登录后)之后,如何再次访问SP以获取其他资源?这是否意味着我必须在ECP客户端中记录JSessionID cookie?

    3. SAML SSO(WebSSO)的理论是否像Jasig CAS(使用cookie /会话)?如果是这样,在ECP模式下,如何在两个ECP客户端上单独登录(每个客户端连接到不同的SP,但SP连接到同一个IdP)。或者,我可以在ECP客户端和浏览器中进行SSO吗?

    4. 提前致谢!

0 个答案:

没有答案