【问题标题】:Seperate Authorisation and resource server for openId Connect + OAuthopenId Connect + OAuth 的单独授权和资源服务器
【发布时间】:2019-04-02 07:29:14
【问题描述】:

我将使用 OAuth 和 openId 连接。我的应用程序将有一个单独的授权服务器和资源服务器。我想实现一个 POC。 我有几个问题: 1. 如何将收到的访问令牌存储在我的应用程序中?什么是最好的选择?存储在数据库或会话/cookie 中? 2. 资源服务器如何验证授权服务器生成的访问令牌? 3. 如何在我的应用程序中实现会话管理?我读到 openId connect 是无状态的,但是要验证我需要维护会话的令牌,非常困惑。

我读了很多,但找不到授权和资源服务器分开的场景。

【问题讨论】:

  • 你有没有得到这个工作?我的授权和资源服务器也是分开的,我不知道如何使用来自身份验证服务器的令牌来访问我的资源服务器。

标签: oauth openid-connect


【解决方案1】:
  1. 访问令牌通常是短暂的。这样做是出于安全目的,以避免 MITM 攻击。因此,在我看来,除非您出于某种原因使用长寿命令牌(在这种情况下最好使用数据库),否则最好的选择是将访问令牌存储在服务器会话或 cookie 中。
  2. 基本上有两种方法可以做到这一点。您可以通过资源服务器使用访问令牌调用授权服务器 (IdP) 的 introspection 端点,或者您可以使用库 (nimbusds, auth0) 通过 验证令牌签名和声明。推荐的是第二种选择,因为如果有多个资源尝试使用自省来验证令牌,则开销会太高。此外,一些 IdP 不允许通过不记名令牌进行自省,这在公共客户端的情况下可能会出现问题(在客户端凭据中没有使用客户端密码)。
  3. 我想这取决于您的应用程序是如何工作的。如果您使用的是类似 servltes 的东西,您可以通过客户端应用程序将令牌存储在服务器会话或 cookie 中。当令牌被发送到资源服务器时,它们应该在 Authorization 参数下的请求标头中发送。这个不太确定。

希望这会有所帮助。干杯。

【讨论】:

    猜你喜欢
    • 2018-05-15
    • 2019-04-05
    • 2013-04-20
    • 2016-11-19
    • 2018-05-09
    • 2021-10-18
    • 2015-05-14
    • 2015-11-23
    • 2018-05-07
    相关资源
    最近更新 更多