PingFederate IdP startSSO.ping:如何将数据传递到 SAML 属性中?
PingFederate IdP startSSO.ping: How to pass data to be placed into SAML attributes?
我需要在 SSO 期间使用 PingFederate 将数据从一个系统传递到另一个系统。
目前我的 link 看起来像这样:
https://pingfederate.myexample.org/startSSO.ping?TargetResource=https%3A%2F%2Fwebapp.othercompany.org%3FkeepParam%3DkeepThisOnURLparamOne%3DvalueOne%26paramTwo%3DvalueTwo
TargetResource,已解码,如下所示:
https://webapp.othercompany.org?
keepParam=keepThisOnURL
¶mOne=valueOne
¶mTwo=valueTwo
在 pingfederate 处理请求后,它最终向 othercompany 发出 post,将整个 TargetResource 复制到 RelayState、params 和所有:
POST https://sso.othercompany.org
SAMLResponse: {paramOne: valueOne; paramTwo: valueTwo} //(in actual saml format)
RelayState: https://webapp.othercompany.org?keepParam=keepThisOnURL¶mOne=valueOne¶mTwo=valueTwo
我的目标是以某种方式将 paramOne 和 paramTwo 传递到 SAML 属性中,但不将这些参数传递到 RelayState,只保留 keepParam=keepThisOnURL:
POST https://sso.othercompany.org
SAMLResponse: {paramOne: valueOne; paramTwo: valueTwo} //(in actual saml format)
RelayState: https://webapp.othercompany.org?keepParam=keepThisOnURL
这可能与 PingFederate 相关吗?
例如,除了将数据偷偷放入 TargetResource 之外,还有其他方法可以将数据从浏览器请求传递到 startSSO.ping 吗?
或者如果它们只能附加到 TargetResource,是否可以在复制到 RelayState 之前修改值(去除大部分参数)?
参数被添加到中继状态的原因是因为您对它们进行了 URLEncoded,所以 PingFed 认为它们只是 TargetResource 的一部分。
相反,你会做这样的事情:
https://pingfederate.myexample.org/idp/startSSO.ping?
paramOne=valueOne&
paramTwo=valueTwo&
TargetResource=https%3A%2F%2Fwebapp.othercompany.org%3FkeepParam%3DkeepThisOnURL
我应该指出两点,第一点是一个亮点:
- 不支持通过在 startSSO.ping 调用中传递的参数来实现属性,并且在满足当前两个功能请求 PPQ-1141 和 PPQ-2815 中的至少一个之前无法正常工作。这些目前都没有安排在开发序列中(低请求量),因此如果这对您的工作至关重要,请与您的 Ping 客户主管联系以传达您的需求。
- 我应该指出,从操作的角度来看,这种总体方法可能没有多大意义,仅仅是因为这意味着您将依赖于 IdP 发起的交易,因为您无法实现这一点使用 SP 发起的交易。
基于这些,我建议尝试构建另一种解决方案,您可以通过该解决方案设置这些属性,我认为这可能很困难 - 特别是如果它们仅在运行时派生,而不是通过查询数据存储。
我需要在 SSO 期间使用 PingFederate 将数据从一个系统传递到另一个系统。
目前我的 link 看起来像这样:
https://pingfederate.myexample.org/startSSO.ping?TargetResource=https%3A%2F%2Fwebapp.othercompany.org%3FkeepParam%3DkeepThisOnURLparamOne%3DvalueOne%26paramTwo%3DvalueTwo
TargetResource,已解码,如下所示:
https://webapp.othercompany.org?
keepParam=keepThisOnURL
¶mOne=valueOne
¶mTwo=valueTwo
在 pingfederate 处理请求后,它最终向 othercompany 发出 post,将整个 TargetResource 复制到 RelayState、params 和所有:
POST https://sso.othercompany.org
SAMLResponse: {paramOne: valueOne; paramTwo: valueTwo} //(in actual saml format)
RelayState: https://webapp.othercompany.org?keepParam=keepThisOnURL¶mOne=valueOne¶mTwo=valueTwo
我的目标是以某种方式将 paramOne 和 paramTwo 传递到 SAML 属性中,但不将这些参数传递到 RelayState,只保留 keepParam=keepThisOnURL:
POST https://sso.othercompany.org
SAMLResponse: {paramOne: valueOne; paramTwo: valueTwo} //(in actual saml format)
RelayState: https://webapp.othercompany.org?keepParam=keepThisOnURL
这可能与 PingFederate 相关吗?
例如,除了将数据偷偷放入 TargetResource 之外,还有其他方法可以将数据从浏览器请求传递到 startSSO.ping 吗?
或者如果它们只能附加到 TargetResource,是否可以在复制到 RelayState 之前修改值(去除大部分参数)?
参数被添加到中继状态的原因是因为您对它们进行了 URLEncoded,所以 PingFed 认为它们只是 TargetResource 的一部分。
相反,你会做这样的事情:
https://pingfederate.myexample.org/idp/startSSO.ping?
paramOne=valueOne&
paramTwo=valueTwo&
TargetResource=https%3A%2F%2Fwebapp.othercompany.org%3FkeepParam%3DkeepThisOnURL
我应该指出两点,第一点是一个亮点:
- 不支持通过在 startSSO.ping 调用中传递的参数来实现属性,并且在满足当前两个功能请求 PPQ-1141 和 PPQ-2815 中的至少一个之前无法正常工作。这些目前都没有安排在开发序列中(低请求量),因此如果这对您的工作至关重要,请与您的 Ping 客户主管联系以传达您的需求。
- 我应该指出,从操作的角度来看,这种总体方法可能没有多大意义,仅仅是因为这意味着您将依赖于 IdP 发起的交易,因为您无法实现这一点使用 SP 发起的交易。
基于这些,我建议尝试构建另一种解决方案,您可以通过该解决方案设置这些属性,我认为这可能很困难 - 特别是如果它们仅在运行时派生,而不是通过查询数据存储。