如何在 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 当然也适合处理该用例。您有两个选择:
- 为每个日历分配一个范围,例如
Calendar.1.Read
(记住,范围
内容未由 OAuth 2.0 定义,可以是动态的)
- 使用一种不透明的不记名访问令牌,需要
validation/introspection 在授权服务器并传递资源
除了访问令牌之外,该调用的标识符,例如
Calendar.1
是与访问令牌关联的资源标识符和范围
是 Calendar.Read
我们知道如何通过访问令牌授予访问权限,通过身份令牌授予用户信息。
我们知道我们可以向身份令牌添加角色声明。
但是在每个内容的权限访问中,我不知道如何使用声明和令牌。
假设用户 A 拥有 ID 为 1 的日历,并且他允许用户 B 读取它。
用户 B 通过 SPA 访问 REST 服务的范围是: Calendar.Read Calendar.Write Calendar.List
但是对于日历 (id = 1),我们只需要一个 Calendar.Read 范围。
我们如何在 OAuth 中处理这种情况?
有规律吗?
这种情况还有其他协议吗?
OAuth 2.0 当然也适合处理该用例。您有两个选择:
- 为每个日历分配一个范围,例如
Calendar.1.Read
(记住,范围 内容未由 OAuth 2.0 定义,可以是动态的) - 使用一种不透明的不记名访问令牌,需要
validation/introspection 在授权服务器并传递资源
除了访问令牌之外,该调用的标识符,例如
Calendar.1
是与访问令牌关联的资源标识符和范围 是Calendar.Read