单点登录。如何使用 IdP 作为代理?

SSO. How to use IdP as a Proxy?

实施 SSO 身份验证流程。我是这里的新手,无法获得一些地方。我试图实施服务提供商发起的流程。它看起来像这样:

  1. 用户单击我的前端应用程序上的按钮进行身份验证federation
  2. 用户重定向到联合表单并选择所需的 IdP 进行身份验证。
  3. 点击 IdP 按钮后,用户重定向到某些 IdP 上的特殊授权表单并输入他们的凭据。
  4. 用户在 Log in 上单击那里并使用 SAMLResponse 重定向到我们的服务器。

所以,它看起来不错,但我有一个必需的身份验证参数,它对我的​​系统是必需的,但对 IdP 不是。这意味着我需要以某种方式将此参数发送给 IdP,而 IdP 应该 return 它没有任何更改。我试图阅读很多信息如何去做,但什么也找不到。我看到名为 RelayState 的参数可以设置为前端应用程序的 URL 并且在 IdP 上进行身份验证后它将 return 到我的服务器而不做任何更改。

基本上我的问题是如何使用 IdP 作为代理?

你正在做的是SP Initiated,这里有一个很好的writeup

"RelayState的本义是SP可以将一些值连同AuthnRequest一起发送给IDP,然后取回。SP可以在RelayState中放入任何它想要的值,IDP应该只是回应它返回响应。"

Example 如何使用它。

问题是并非所有 IDP 都实现它,如果您从您的 IDP 重定向到另一个 IDP,它可能无法通过。