【问题标题】:Separate authentication and authorization servers for SPA appSPA 应用程序的独立身份验证和授权服务器
【发布时间】:2022-06-11 02:23:37
【问题描述】:

我有

  • UI(单页应用)
  • 外部身份验证服务器
  • 我自己的授权服务器
  • 资源服务器(我自己的后端 API)

这就是我想要做的事情

  1. UI/用户从外部身份验证服务器获取 AuthN 令牌。
  2. UI 发送 AuthN 令牌以从我自己的授权服务器获取 AuthZ 令牌
  3. UI 使用 AuthZ 令牌从资源服务器检索数据

但问题是我不知道用户是否仍然经过身份验证,因为我从第 3 步开始停止使用 AuthN 令牌。我应该同时使用这两个令牌吗?或者以某种方式将 2 个令牌合并为一个?希望能从这里得到一些想法。谢谢!!

【问题讨论】:

    标签: authentication oauth-2.0 authorization single-page-application openid-connect


    【解决方案1】:

    这是管理组件的标准方式:

    1. UI 将 OpenID Connect 重定向到授权服务器 (AS)

    2. AS 将第二次 OpenID Connect 重定向到身份验证系统。其中可能不止一个,例如 Google、Facebook。

    3. 用户登录后,AS 为您的 UI 和资源服务器发出相同的令牌,无论用户如何登录。UI 将访问令牌发送到资源服务器,该服务器可以根据收到的范围和声明进行授权。

    除非您有特殊原因,否则不要在您自己的应用程序中使用来自身份验证系统的外部令牌。这是因为您无法控制它们的内容。

    认证时间

    OpenID Connect max-age and auth-time 声明可用于控制提示用户重新进行身份验证的频率。例如,您可以在访问令牌过期时检查此项。

    【讨论】:

    • 谢谢!我对这个流程有同样的问题:在用户获得访问令牌后,如果用户从身份验证系统注销,比如谷歌,我们如何知道用户是否不再经过身份验证?我们的token是AS颁发的,我们不知道Google端的状态了。 OpenID Connect 是否以某种方式解决了这个问题?
    猜你喜欢
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多