我已经成功地将SAML SSO配置为OpenAM作为SP,将PingFederate作为IDP与SP发起的SSO并使用了重定向后绑定。我正在使用kerberos适配器来实现SSO。
但是,在身份验证成功后,我无法将RelayState参数从OpenAM传递到PF并将其作为SAML自动投递表单的一部分重新获得。它始终重定向到OpenAM声明处理服务,即openam / metalias / sp
我尝试过的事情-
我在Idp的属性映射中创建了绑定,名称为“ RelayState”,但它显示为已签名的SAMLResponse的一部分,而不是自动回发表单中的多余参数,因此openam无法获取RelayState。
我还尝试将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 autopost表单以使其包含RelayState参数,并且它起作用了。
因此,我需要找到一种方法,可以将这些信息传递给PF,然后在身份验证完成向SAMLResponse表单中添加额外参数后,PF可以将其传递回SP-OpenAM。
答案 0 :(得分:1)
使用“ saml2 / jsp / spSSOInit.jsp”而不是SAML2身份验证模块URL解决了此问题。