当前位置: 首页 > 知识库问答 >
问题:

在PingFederate(IDP)OpenAM(SP)和SP启动的sso之间传递RelayState

岑元徽
2023-03-14

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

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

我试过的事情-

>

  • SAML身份验证和自定义重定向URL

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

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

    我还尝试以url编码的形式传递RelayState,并以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>
    
    
    

    出于好奇,我修改了pingfederateautopost表单,使其foce包含relystate参数,并且成功了。

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

  • 共有1个答案

    别浩漫
    2023-03-14

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

     类似资料:
    • 我已经配置了OpenAM IdP和SP。我正在纠结于IdP发起的SSO URL和SP发起的SSO URL。我使用以下格式的IdP发起的单点登录网址。但是我得到错误< code >服务提供商ID为空。 http://testtestidam.com:8080/openam/idpssoinit?metaAlias=/realm1/idp 任何人都可以帮忙吗?

    • 我正在进行SP启动的SSO。 IDP是PingOne 我一直在做IDP发起的SSO。 因此,我们有IDP启动的SSO设置,一切都很正常。我们现在必须让它启动。 我理解它背后的理论,但我不知道如何实施它! 到目前为止,我在想我需要给他们的网址是这样的,也许???: https://sso/saml2/jsp/spSSOInit.jsp?metaAlias=/{idpRealm}/sp 但是当我击中它

    • 如何从SAML响应中判断是SP启动的SSO还是IDP启动的SSO?是否有一个属性告诉我是谁发起了SSO? 例如,在这个StackOverflow问题中:SP发起的SSO和IDP发起的SSO之间的差异,他们讨论了差异,但没有谈论XML级别本身...... SAML响应如下所示:

    • 我是KeyClope的新手,正在尝试将其配置为SalesForce客户端的SAML IDP。IDP启动的SSO流工作正常。我被引导到Salesforce主页正确地进行身份验证。然而,SP启动的SSO给了我一个JSON输出,而不是KeyClope登录页面。 这是SalesForce重定向到的URL(屏蔽IP):http://10.99.xxx.xxx:8080/auth/realms/test?SA

    • 我尝试在SAML请求中将URL作为RelayState从SP传递给IDP,以便在身份验证完成后取回它。但是,我不知道该怎么做。我在我的ASP.NET WebApi应用程序中使用sustainsys.saml2进行saml配置。 问题1:目前,我有一个类似这样的URL: http://example.com/tmwebapi/saml2/signin?http://www.okta.com/hgdh

    • 我们正在使用PingFederate实现一个web SSO解决方案,第三方产品包括SAML2开箱即用。 但是,如果用户仍在积极使用SP,我们正在尝试解决如何停止IDP会话超时的问题。 第三方产品支持请求IDP端的空资源,目的是该URL将导致IDP会话被延长。 我在PingFederate中看不到任何支持这种东西的东西。有人知道这通常是如何解决的吗?有没有一种方法可以扩展PingFederate会话