如何在 OAuth 2 中应用细粒度的每个内容权限?

How apply granular per content rights in OAuth 2?

我们知道如何通过访问令牌授予访问权限,通过身份令牌授予用户信息。

我们知道我们可以向身份令牌添加角色声明。

但是在每个内容的权限访问中,我不知道如何使用声明和令牌。

假设用户 A 拥有 ID 为 1 的日历,并且他允许用户 B 读取它。

用户 B 通过 SPA 访问 REST 服务的范围是: Calendar.Read Calendar.Write Calendar.List

但是对于日历 (id = 1),我们只需要一个 Calendar.Read 范围。

我们如何在 OAuth 中处理这种情况?

有规律吗?

这种情况还有其他协议吗?

OAuth 2.0 当然也适合处理该用例。您有两个选择:

  1. 为每个日历分配一个范围,例如Calendar.1.Read(记住,范围 内容未由 OAuth 2.0 定义,可以是动态的)
  2. 使用一种不透明的不记名访问令牌,需要 validation/introspection 在授权服务器并传递资源 除了访问令牌之外,该调用的标识符,例如Calendar.1 是与访问令牌关联的资源标识符和范围 是 Calendar.Read