在 PingFederate(IDP) OpenAM (SP) 与 Sp-start sso 之间传递中继状态



我已经成功地将SAML SSO配置为OpenAM作为SP,PingFederate作为IDP,具有SP启动的SSO并使用重定向-Post绑定。我正在使用 kerberos 适配器来实现 SSO。

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

我尝试过的事情 -

  1. SAML 身份验证和自定义重定向网址

  2. SSO - SAML,在成功登录后将用户重定向到指定的登录页面

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

我还尝试将RelayState作为url编码传递,并使用名称TargetResource传递它。但是没有运气。

<!-- template name: form.autopost.template.html -->
#set( $messageKeyPrefix = "form.autopost.template." )
<html>
<head>
<title>$templateMessages.getMessage($messageKeyPrefix, "title")</title>
<meta name="referrer" content="origin"/>
<meta http-equiv="x-ua-compatible" content="IE=edge" />
</head>
<body onload="javascript:document.forms[0].submit()">
<noscript>
<p>
<strong>$templateMessages.getMessage($messageKeyPrefix, "noteTitle"):</strong> $templateMessages.getMessage($messageKeyPrefix, "note")
</p>
</noscript>
<form method="post" action="$action">
#foreach( $name in $formControls.keySet() )
<input type="hidden" name="$escape.escape($name)" value="$escape.escape($formControls.get($name))"/>
#end
<input type="hidden" name="RelayState" value="https://www.google.com"/>
<noscript><input type="submit" value="$templateMessages.getMessage($messageKeyPrefix, "resume")"/></noscript>
</form>
</body>
</html>

出于好奇,我修改了pingfederate自动发布表单以包含RelayState参数,并且它起作用了。

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

使用 'saml2/jsp/spSSOInit.jsp' 而不是 SAML2 身份验证模块 URL 解决了这个问题。

相关内容

  • 没有找到相关文章

最新更新