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

SSO - SAML, Redirect a user to a specified landing page after successful log in

我正在实施 SSO,我是身份提供者,现在我能够成功登录到服务提供者。但它将我带到主页。我想在 post 响应时指定登录页面 URL。 已经搜索了很多但找不到任何令人信服的东西。 不太清楚 SAML 响应的哪个元素带有着陆页 URL 或者是我必须指定的形式。使用 java 和 opensaml 库生成响应。

虽然它不在 SAML 规范中,但事实上的标准是为此使用 RelayState 元素。除了 SAMLResponse 参数和 landing URL 的值之外,它作为响应中的参数添加。使用 POST 绑定响应的 IDP 来自 http://en.wikipedia.org/wiki/SAML_2.0 的示例 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 之间传递 任意 状态和国内流离失所者。使用它来传递定义着陆页的 URL 未在规范中定义,但实际上是标准用法。 IDP-init-SSO 中 RelayState 的任何使用都取决于 IDP 和 SP 之间的成对协议,这只是一个有意义、有用的协议,因此已被广泛采用。