gpt4 book ai didi

node.js - 使用 angular、node.js 和身份提供者的 SAML 身份验证

转载 作者:行者123 更新时间:2023-12-05 02:03:26 25 4
gpt4 key购买 nike

我想使用 SAML2 实现 SSO。但我不知道如何让它与分布式系统一起工作,在分布式系统中,每个实例都在自己的服务器上独立运行。环境由三个实例组成:

  • 实例 #1: Angular 前端
  • 实例 #2:node.js 后端(使用 express.js + passport)
  • 实例 #3:SAML 实例(身份提供者)

问题是,如果前端调用 protected 后端路由,最佳方法是什么?哪些行动顺序可以被视为良好做法?

此刻我脑子里有这样的行为:

  1. 前端向 protected 后端路由发送请求
  2. 由于用户未通过身份验证,服务器启动重定向到身份提供商提供的 SSO 页面。
  3. 在那里输入凭据
  4. 用户通过 saml 实例进行身份验证,并将请求发送回服务器。
  5. 现在用户已通过身份验证,服务器将请求资源的响应发送回客户端。

但只要我想到这个顺序,我就意识到这是行不通的。这是因为前端是它自己的实例并且它独立于后端。如果您有一个单独的前端实例,则由 Passport 发起的到 SSO 页面的重定向将不起作用。如果您直接使用浏览器调用 protected 路由,它会起作用,因为那样您只有两个通信伙伴(服务提供者和身份提供者)而不是三个。但这里不是这种情况。

感谢和问候

菲利普

最佳答案

我在以前的工作中用这个 logique 做过类似的事情:

  1. 在 Angular 中实现一个登录页面(获取凭据的简单表单),然后在后端调用登录服务。
  2. 该后端登录服务应根据身份提供者验证前端提供的凭据(我相信他们会为您提供一个 URL,您可以在其中注入(inject)这些参数)。
  3. 验证身份后,调用后端的认证服务为该用户生成 token (Passport JS 应该完成这项工作),然后将此 token 发送回前端。
  4. 在前端,实现一个守卫,它应该处理 token /将用户凭证设置到本地存储...
  5. 在前端,还实现一个拦截器,在每个 XHR header 中注入(inject)此 token ,或在 token 不存在或过期时将用户重定向到登录表单。
  6. 在后端,logique 将是经典的(在发回数据之前从 XHR header 验证 token 有效性/如果验证失败则告诉前端登录)。

使用此逻辑,您将使前端远离身份提供者并与后端保持一致。

关于node.js - 使用 angular、node.js 和身份提供者的 SAML 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65250156/

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