还需要 ID 令牌才能访问 API 端点

sfT*_*mas 5 http oauth http-headers openid-connect

让我们举一个例子,我们有一个 SPA 使用 OIDC 隐式流访问 API。

由于 OAuth 范围是粗粒度的,因此通常需要在资源服务器上执行额外的授权。例如,当通过端点访问动态资源(例如文件系统)时,可能会出现这种情况 - 其中访问受到与 userId 绑定的权限的限制,但由于资源的动态性质,仅使用 OAuth 范围是不切实际的。

在这些情况下,端点本身可以​​受到 OAuth 范围的保护,同时将根据 userId 授予对端点所操作的资源(例如文件)的访问权限。因此,用户的身份必须在 API 请求中安全地发送。

一个显而易见的选择是发送身份验证时获得的 ID 令牌以及同时获得的访问令牌。

有一种在 HTTP 请求中发送访问令牌(授权标头)的标准方法,但是有用于 ID 令牌的标准方法吗?或者我应该编写一个像“X-Identity”这样的标头名称?

Han*_* Z. 3

回答这个问题:在 HTTP 请求中传递 ID 令牌没有标准。

但可以说不需要有一个:在这种情况下,您可能不需要 OpenID Connect,因为这scopes并不是您建议的与 OAuth 2.0 访问令牌关联的唯一信息。

您可以将 userId 与访问令牌“关联”,以便资源服务器可以根据向客户端授予访问令牌的用户的身份授予客户端对受保护资源的访问权限。

“关联”取决于实现:访问令牌可以是包含 userId 声明的 JWT,或者访问令牌可以是资源服务器可以在授权服务器上内省/验证以获取与其关联的信息的不透明值。