如何访问资源服务器上的最终用户上下文

how to access end user context on resource server

我有一个API管理实现如下。

最终用户 <--> Web 应用程序 <--> API 服务器网关 <--> API 资源服务器

我使用 OAuth grant_type=code 来验证用户凭据,然后使用令牌访问 API 资源。

作为 API 提供者(资源开发者),我需要访问最终用户凭据(或至少上下文)以了解谁在发起请求并提供为用户定制的响应。

可能吗?如果是,那是否违反了 OpenID / OAtuh 标准?

是的,这是可能的,但不是 - 您不会违反 OAuth 标准。原因:令牌验证(授权服务器和资源服务器之间的信息交换超出了 OAuth 规范的范围)。

引用自OAuth 2.0 Token Introspection

Since OAuth 2.0 [RFC6749] does not define a protocol for the resource server to learn meta-information about a token that is has received from an authorization server, several different approaches have been developed to bridge this gap.

授权服务器将作为内省结果返回的两个最重要的实体是用户标识符批准的范围 (通过提供的令牌)。

内省可以通过几种方式完成:

  • Google方式:Validate Token
  • JWT - 基于 JWT 的访问令牌具有可用的范围和用户信息,因此可能无需联系授权服务器进行验证*。
  • 等等