Single sign on 使用SP启动的sso在PingFederate(IDP)OpenAM(SP)之间传递RelayState

Single sign on 使用SP启动的sso在PingFederate(IDP)OpenAM(SP)之间传递RelayState,single-sign-on,kerberos,saml-2.0,openam,pingfederate,Single Sign On,Kerberos,Saml 2.0,Openam,Pingfederate,我已成功配置SAML SSO,其中OpenAM作为SP,PingFederate作为IDP,SP启动SSO并使用重定向后绑定。我正在使用kerberos适配器实现SSO 但是,我无法将RelayState参数从OpenAM传递到PF,并在成功验证后将其作为SAML自动post表单的一部分返回。它总是重定向到OpenAM断言处理服务,即OpenAM/metalias/sp 我试过的东西- 我使用名称RelayState在属性映射中的Idp中创建了绑定,但它显示为已签名SAMLResponse的一部

我已成功配置SAML SSO,其中OpenAM作为SP,PingFederate作为IDP,SP启动SSO并使用重定向后绑定。我正在使用kerberos适配器实现SSO

但是,我无法将RelayState参数从OpenAM传递到PF,并在成功验证后将其作为SAML自动post表单的一部分返回。它总是重定向到OpenAM断言处理服务,即OpenAM/metalias/sp

我试过的东西-

我使用名称RelayState在属性映射中的Idp中创建了绑定,但它显示为已签名SAMLResponse的一部分,而不是自动回发表单中的额外参数,因此openam无法获取RelayState

我还尝试以url编码的形式传递RelayState,并使用名称TargetResource传递它。但是没有运气

设置$messageKeyPrefix=form.autopost.template。 $templateMessages.getMessage$messageKeyPrefix,标题 $templateMessages.getMessage$messageKeyPrefix,noteTitle:$templateMessages.getMessage$messageKeyPrefix,note

$formControls.keySet中的foreach$name 终止 出于好奇,我将pingfederateautopost表单修改为foce-include-RelayState参数,并且成功了


因此,我需要找到一种方法,在身份验证完成后,我可以将此信息传递给PF,然后PF可以将其传递回SP OpenAM。在SAMLResponse表单中添加额外参数。

使用“saml2/jsp/spSSOInit.jsp”而不是saml2身份验证模块URL解决了此问题

对于SP init,根据规范,SP应该在AuthnRequest的RelayState参数中向IdP发送不透明值,而不是URL。此值应该是在SP捕获的密钥-值对的密钥,该值保存SSO完成后用户应重定向的位置。PingFederate将在RelayState中使用相同的值响应AuthnRequest。SP应查找要重定向用户的位置,并将用户发送出去。我怀疑您没有正确启动SP init事务,但我不熟悉OpenAM,无法提供更多帮助。您如何从OpenAM触发SP启动的SSO?您使用的'saml2/jsp/spSSOInit.jsp'等同于URI'spSSOInit'?@BernhardThalmayr您好,我们对Sp init使用重定向Post技术。因此SP将重定向到IDP。它由身份验证模块驱动。在模块中,我们配置IDP实体Id,在联邦中,我们有信任圈。因此,当请求到达联邦信任圈中的特定模块时。如果您使用的是SAML2身份验证模块,那么实际上OpenAM会将浏览器发送回用于在SAML流成功后触发“goto”参数的身份验证值的URL。你想去别的地方吗?@BernhardThalmayr-是的,我正在使用SAML2身份验证模块。模块名为PingSAML。。因此,当我点击时,它会重定向到IDP,成功后会转到/openam/Consumer/metaAlias/sp。IDP不知道goto/relaystate参数。。也不会将其发送回SP作为响应。我尝试过在重定向请求中使用RelayState而不是goto作为键,但结果相同。始终返回到/openam/Consumer/metaAlias/-Assertion使用者服务问题是goto参数未填充