gpt4 book ai didi

angular - 具有服务网关调用的 SSO 身份验证 Angular 应用程序

转载 作者:行者123 更新时间:2023-12-05 01:15:00 28 4
gpt4 key购买 nike

我们有一个使用 Angular 构建的应用程序。应用程序触发后端 REST api 来显示数据。

问题是,

该应用程序使用 LDAP SSO 身份验证来验证用户(这是公司内部的应用程序,因此没有外部用户)

步骤是,

  1. 如果用户启动站点,它将重定向到 WebSec 登录,用户在其中提供用户名和密码进行身份验证(隐式流程)。

  2. 一旦身份验证成功,我们将从 WebSec 获取 JWT 访问 token ,该 token 将存储在 session 存储中,并将用作后端服务的“承载” token 。

  3. 后端服务有自己的 WebSec 证书来验证这个 JWT token ,否则它将以身份验证错误作为响应。

对于前端——我们使用 Angular对于后端——我们是 Java,Sprint 引导。

问题是,

  1. 这是用户身份验证的正确方法吗?
  2. 如果是这样,隐式流的安全性如何。引用:https://www.instagram.com/developer/authentication/ - 每个人都在推荐显式流(服务器端调用)。我们的 UI 应用程序在不同的服务器上维护,后端服务在不同的服务器上维护。

如果有人对此提供解决方案,我将不胜感激。

最佳答案

到目前为止,我看到的最好的方法如下(我还运行了一个 MS 单点登录服务器,正如你所描述的那样),但我建议它像 Discord 那样做:

  1. 您的前端使用 redirect_linkapplication_id 重定向到 SSO 并声明请求
  2. 如果身份验证成功并且 application_id 已知,但您的 SSO 会重定向到 redirect_link,但会随机创建 code=$myCode,可以是 JWT 或任何长字符串
  3. 您的前端将此代码发送到您的后端,然后您的后端会询问 SSO 服务器这是否是一个有效的 code 并请求一个真正的身份验证承载 token 。
  4. 如果一切正常,您的前端会从您的 API
  5. 获取真正的身份验证 token

如果这条链全部成功,您可以非常确定您的内部网络中的一切都很好。这对于公司内部来说是一个足够好的方法。

对于外部使用,您可以在第 1 步和第 2 步中提供一个安全 key ,sso 必须为从前端生成的前端提供回来,以确保此重定向来自您的 SSO。

编辑:有关加密的更多详细信息:

您的 SSO 可能使用 HS512 对代码进行加密,该代码将发送到客户端,然后通过 API 再次发送到 SSO。在这个循环中,如果 SSO 可以解密和验证它并且 API 是已知/允许的通信伙伴,那么您可以说所有方面都是可信的。

关于angular - 具有服务网关调用的 SSO 身份验证 Angular 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57105396/

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