导致IDP在身份验证响应中包含指定的属性

时间:2011-11-10 10:18:32

标签: saml

我查看了标准,并浏览了OpenSAML-J API,但找不到明显的方法来执行此操作。有可能,如果可能,怎么样?

我想要的是在AuthnRequest(由我的代码生成并发布到IDP)中包含某些,这会导致最终AuthnResponse包含命名具有特定值的属性。理想情况下,应始终包含该属性,但如果仅在成功进行身份验证时包含该属性,则该属性也将起作用。在构建AuthnRequest时,所需的名称和值都是已知的。

我也考虑了RelayState片刻,但这似乎也不是我想要的。

Are attributes allowed in a SAML authentication request?讨论了使用AuthnRequest包含属性,但就我所知,使用Extensions包含属性并不能保证IDP发出的最终响应中会包含相同的属性。 (但也许我误读了Core部分7.2.1并且它真的适用于我的情况?)我不能依赖于特定实现的行为;它必须由标准保证。

任何建议都将不胜感激。

我能想到的唯一其他解决方案是在本地存储相关数据,并分别使用请求和响应上的IDInResponseTo属性来引用它,但这引入了一点点如果可以的话,我宁愿避免开销和复杂性。

2 个答案:

答案 0 :(得分:1)

可能的解决方法是在用户通过身份验证后将AttributeQuery恢复为IdP吗?在AttributeQuery中,您可以命名您有兴趣检索的任何属性。如果可以,响应将返回那些。

并非所有SAML产品都支持AttributeQuery,因此我不确定您在问题的任何一方有多大的灵活性。

答案 1 :(得分:0)

RelayState是正确使用的功能。由于您希望返回的所有值在请求构造期间已知,因此您可以将它们序列化为字符串,在发送AuthnRequest时提供RelayState并将其与AuthnResponse一起返回。