我需要在使用PingFederate的SSO期间将数据从一个系统传递到另一个系统。
目前,我的链接如下所示:
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处理请求后,它最终向其他公司发布帖子,将整个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有关吗?
,有没有其他方法可以将数据从浏览器请求传递到startSSO.ping,除了将它们偷偷带入TargetResource?
或者如果它们只能附加到TargetResource,那么在复制到RelayState之前是否可以修改该值(去掉大多数参数)?
答案 0 :(得分:2)
将参数添加到中继状态的原因是因为你对它们进行了URLE编码,所以PingFed认为它们只是TargetResource的一部分。
相反,你会做这样的事情:
https://pingfederate.myexample.org/idp/startSSO.ping?
paramOne=valueOne&
paramTwo=valueTwo&
TargetResource=https%3A%2F%2Fwebapp.othercompany.org%3FkeepParam%3DkeepThisOnURL
我应该指出两件事,第一件事是showstopper:
基于这些,我建议尝试构建另一种解决方案,通过该解决方案可以设置这些属性,我认为这些属性可能很难 - 特别是如果它们仅在运行时派生,而不是通过查询到数据存储区。