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

Single sign on SSO-SAML,成功登录后将用户重定向到指定的登录页,single-sign-on,saml,opensaml,Single Sign On,Saml,Opensaml,我正在实施SSO,我是身份提供商,现在我能够成功登录到服务提供商。但它把我带到了主页。我想在发布响应时指定登录页URL。 我找了很多,但找不到令人信服的东西。 我不太清楚SAML响应的哪个元素带有登录页URL,或者是我必须指定的表单中的URL。使用java和opensaml库来生成响应。尽管它不在SAML规范中,但事实上的标准是使用RelayState元素。除了SAMLResponse参数和landingURL的值之外,它还作为参数添加到响应中。使用响应的POST绑定的IDP的示例HTML页面:

我正在实施SSO,我是身份提供商,现在我能够成功登录到服务提供商。但它把我带到了主页。我想在发布响应时指定登录页URL。 我找了很多,但找不到令人信服的东西。
我不太清楚SAML响应的哪个元素带有登录页URL,或者是我必须指定的表单中的URL。使用java和opensaml库来生成响应。

尽管它不在SAML规范中,但事实上的标准是使用
RelayState
元素。除了
SAMLResponse
参数和
landing
URL的值之外,它还作为参数添加到响应中。使用响应的
POST
绑定的IDP的示例HTML页面:

<form method="post" action="https://sp.example.com/SAML2/SSO/POST" ...>
    <input type="hidden" name="SAMLResponse" value="<response>" />
    <input type="hidden" name="RelayState" value="<url>" />
    ...
    <input type="submit" value="Submit" />
</form>

...
编辑:

需要明确的是,
RelayState
参数声明是规范的一部分,它允许在SP和IDP之间传递任意状态。使用它传递定义登录页的URL在规范中没有定义,但实际上是标准用法。在IDP init SSO中使用
RelayState
取决于IDP和SP之间的成对协议,这只是一个有意义的协议,非常有用,因此被广泛采用。

如果我传递一个非编码URL是否安全。SP端给了我一个“未找到”,我猜他们没有在他们端解码它。但是它不需要编码就可以工作。对不起,我想说的是,在HTTP POST中传递它时,它是URL编码的;通过将其逐字放入HTML表单中,浏览器将对其进行URL编码。因此,在我给出的示例中,将实际值放在
中。我将编辑文本。不要吹毛求疵,但
RelayState
绝对符合SAML2.0的标准(即,它比事实上的标准更强)。HTTP POST、HTTP重定向和HTTP工件绑定都包括
RelayState
的规则,但没有一个需要使用它。
RelayState
的名称是标准化的,但它的值不是标准化的。
RelayState的名称是标准化的,但它的值不是标准化的。