gpt4 book ai didi

javascript - 使用来自外部身份提供者的 Saml 响应

转载 作者:行者123 更新时间:2023-11-30 14:42:42 26 4
gpt4 key购买 nike

我在配置我的应用程序以使用来自外部身份提供商(在本例中为 OneLogin)的 SAML 响应时遇到问题。我的应用程序有一个 javascript (angular5) 前端和 .NET 后端。

这是我们当前使用我们自己的身份提供商和服务提供商时的工作流程。

  1. 用户在浏览器中导航到我们的应用程序,并在从 API 请求资源时收到未经授权的 401。
  2. 用户被重定向到登录页面。
  3. 用户输入凭据,这些凭据将发布到我们的服务器端身份提供商。
  4. 如果用户通过身份验证,身份提供者会向客户端返回 SAML 响应。
  5. 客户将 SAML 响应发布给服务提供商。
  6. 服务提供商返回访问 API 其余部分所需的 token 。

现在客户要求我们使用 OneLogin 集成他们的外部身份提供商。这是我所理解的新工作流程。

  1. 用户在浏览器中导航到我们的应用程序,并在从 API 请求资源时收到未经授权的 401。
  2. 用户被重定向到 OneLogin(外部身份提供商)页面。
  3. 用户输入由 OneLogin 验证的凭据。
  4. OneLogin 会将 SAML 响应作为 HTTP Post 中的表单数据发布到我们提供的服务提供商端点。
  5. 如果发布成功,用户将被重定向到配置 OneLogin 时提供的任何 url。
  6. ?????? (我们的前端仍然不知道用户是谁,也不知道他们是否经过身份验证)。

目前,我们的 Angular 前端(客户端)和 .NET 后端(服务器)之间的所有通信都是由客户端发起的。我真正需要的是让客户端接收 OneLogin 发布的 SAML 响应表单数据,这样我就可以向我们的服务提供商发起授权并在客户端接收适当的响应,但据我了解我不会能够使用表单数据客户端。我希望我可以让外部身份提供者重定向到我们前端的页面并将该 saml 响应编码为查询参数,但我没有看到任何方法可以做到这一点。

我觉得我遗漏了一些东西,但所有 OneLogin 示例似乎都是 OneLogin 身份提供者与服务器端服务提供者通信,而没有提及客户端。我可以使用一些帮助更好地理解我需要做什么来实现我的目标,即通知客户用户已通过身份验证和授权。

最佳答案

您使用 OneLogin 描述的是 SAML2 Web 浏览器 SSO 配置文件。如您所见,这一切都是通过浏览器完成的。用户从客户端重定向到他们登录的 IdP。然后,IdP 将 SAMLResponse 发布到您后端的属性消费者服务 (ACS) URL。解码 SAMLResponse 并解析其中包含的 SAML2 属性是 ACS 的工作。如果需要,它可以在此时创建一​​个新 session 。

此时后端现在知道用户是谁了。因此,您可以启动另一个重定向,将浏览器发送到另一个带有参数的 URL,让客户端知道它必须从后端检索用户详细信息。也许是某种 /sso?token=something URL。然后,客户端可以要求后端返回 JSON,其中可能包含 token 引用的用户信息,即一旦验证了属性,后端就创建了某种 session 。

关于javascript - 使用来自外部身份提供者的 Saml 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49424193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com