Single sign on PingFederate IdP startSSO.ping:如何传递要放入SAML属性的数据?

Single sign on PingFederate IdP startSSO.ping:如何传递要放入SAML属性的数据?,single-sign-on,saml,saml-2.0,pingfederate,Single Sign On,Saml,Saml 2.0,Pingfederate,在使用PingFederate进行SSO期间,我需要将数据从一个系统传递到另一个系统 当前我的链接如下所示: https://pingfederate.myexample.org/startSSO.ping?TargetResource=https%3A%2F%2Fwebapp.othercompany.org%3FkeepParam%3DkeepThisOnURLparamOne%3DvalueOne%26paramTwo%3DvalueTwo https://pingfederate.my

在使用PingFederate进行SSO期间,我需要将数据从一个系统传递到另一个系统

当前我的链接如下所示:

https://pingfederate.myexample.org/startSSO.ping?TargetResource=https%3A%2F%2Fwebapp.othercompany.org%3FkeepParam%3DkeepThisOnURLparamOne%3DvalueOne%26paramTwo%3DvalueTwo
https://pingfederate.myexample.org/idp/startSSO.ping?
  paramOne=valueOne&
  paramTwo=valueTwo&
  TargetResource=https%3A%2F%2Fwebapp.othercompany.org%3FkeepParam%3DkeepThisOnURL
解码后的TargetResource如下所示:

https://webapp.othercompany.org?
    keepParam=keepThisOnURL
    &paramOne=valueOne
    &paramTwo=valueTwo
pingfederate处理请求后,它会向其他公司发送帖子,将整个TargetResource复制到RelayState、params和all中:

POST https://sso.othercompany.org
SAMLResponse: {paramOne: valueOne; paramTwo: valueTwo} //(in actual saml format)
RelayState: https://webapp.othercompany.org?keepParam=keepThisOnURL&paramOne=valueOne&paramTwo=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有关吗

例如,除了偷偷地将数据传递到TargetSource之外,是否还有其他方法从浏览器请求将数据传递到startSSO.ping


或者,如果这些参数只能附加到TargetResource,那么在复制到RelayState之前是否可以修改该值(去掉大多数参数)?

将这些参数添加到中继状态的原因是您对它们进行了URL编码,因此PingFed认为它们只是TargetResource的一部分

相反,您可以这样做:

https://pingfederate.myexample.org/startSSO.ping?TargetResource=https%3A%2F%2Fwebapp.othercompany.org%3FkeepParam%3DkeepThisOnURLparamOne%3DvalueOne%26paramTwo%3DvalueTwo
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启动的事务来实现这一点

基于这些,我建议尝试构建另一个解决方案,通过它您可以设置这些属性,我认识到这可能很困难-特别是如果它们只是在运行时派生的,而不是通过查询数据存储来派生的。

参数被固定到中继状态的原因是您对它们进行了URL编码,所以PingFed认为他们只是TargetResource的一部分

相反,您可以这样做:

https://pingfederate.myexample.org/startSSO.ping?TargetResource=https%3A%2F%2Fwebapp.othercompany.org%3FkeepParam%3DkeepThisOnURLparamOne%3DvalueOne%26paramTwo%3DvalueTwo
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启动的事务来实现这一点
基于这些,我建议尝试构建另一个解决方案,通过该解决方案可以设置这些属性,我认识到这可能很困难——特别是如果它们仅在运行时派生,而不是通过查询数据存储