SAML 2.0是否允许将SP数据发送到IdP?

时间:2019-07-02 12:08:44

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

我正在阅读SAML规范并尝试使用KeycloakShibboleth IdP,但不确定如何在SP启动的登录中实现一项功能。

我有一项服务,过去通常会在其登录页面上显示SP状态信息(例如,应用程序版本,状态)。切换到使用IdP登录页面后,我希望在IdP的登录页面上继续显示此类按SP的附加信息。我对数据交换感兴趣,而不是对登录页面本身进行模板化。

SAML 2.0规范是否允许出于登录目的将任意数据发送到IdP?如果没有,使用SP生成的数据可用于装饰IdP登录页面的其他选项有哪些?

2 个答案:

答案 0 :(得分:0)

SP可以发送到IdP的唯一内容是Subject(请参阅规范的lines 585-589)。

答案 1 :(得分:0)

排序。从SP到IdP的身份验证请求允许具有“自定义”扩展名(Extensions父元素),扩展内容由您决定。根据规格:

  

[可选]此扩展点包含可选   协议之间的协议消息扩展元素   沟通各方。不需要扩展架构即可   利用这个扩展点,即使提供了一个扩展点   验证设置不要求扩展为   有效。 SAML扩展元素必须在名称空间中限定   非SAML定义的名称空间。

如果您要编写自己的IdP,则可以使用扩展程序并随心所欲地做。 “标准”(商业/ OSS)IdP将不知道如何处理您的扩展。看看Shibboleth或Keycloak库是否解析了Extensions元素并提供了内容,将是一个有趣的测试。

另一种更标准的可能性是使用RelayState。这是一种符合规范的方式,用于传递一些提供商特定的状态信息,包括。从SP到IdP:

  

3.1.1 RelayState的使用一些绑定定义了一种“ RelayState”机制,用于保存和传达状态信息。当这样的机制   用于传达请求消息作为SAML的初始步骤   协议,它对选择和使用   绑定随后用于传达响应。即,如果是SAML   请求消息带有RelayState数据,然后是SAML   响应者必须使用以下绑定返回其SAML协议响应:   还支持RelayState机制,并且必须放置准确的   它随请求接收到的RelayState数据进入相应的   响应中的RelayState参数。

同样,所有IdP或堆栈库都将解析RelayState,但从那里如何处理它取决于其对规范的阅读。首先,该规范要求RelayState为80字节,并通过签名或“其他方式”进行完整性保护。 IdP和SP通常会忽略此限制。

您要在IdP登录页面上显示哪些特定于SP的信息?