Single sign on PingFederate IdP startSSO.ping:如何传递要放入SAML属性的数据?
在使用PingFederate进行SSO期间,我需要将数据从一个系统传递到另一个系统 当前我的链接如下所示: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
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
¶mOne=valueOne
¶mTwo=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¶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有关吗
例如,除了偷偷地将数据传递到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启动的事务来实现这一点