openId Connect + OAuth的独立授权和资源服务器

时间:2018-10-29 11:12:06

标签: oauth openid-connect

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

我已经阅读了很多书,但是找不到授权和资源服务器分开的情况。

1 个答案:

答案 0 :(得分:0)

  1. 访问令牌通常是短暂的。这样做是出于安全目的,以避免MITM攻击。因此,我认为,除非您出于某种原因使用了长期令牌(在这种情况下,最好使用数据库),否则最好的选择是将访问令牌存储在服务器会话或cookie中。
  2. 基本上有两种方法可以做到这一点。您可以通过资源服务器使用访问令牌来调用授权服务器(IdP)的内省端点,或者可以使用使用库(nimbusds,auth0)来验证资源服务器本身中的令牌>验证令牌签名和声明。推荐使用第二种方法,因为如果有多种资源尝试使用自省来验证令牌,那么开销将太高。另外,某些IdP不允许通过承载令牌进行自省,这对于公共客户端(在客户端凭据中没有可使用的客户端机密)可能是有问题的。
  3. 我想这取决于您的应用程序如何工作。如果使用的是servltes,则可以通过客户端应用程序将令牌存储在服务器会话或cookie中。将令牌发送到资源服务器时,应在“授权”参数下的请求标头中发送令牌。对此一无所知。

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