【问题标题】:How apply granular per content rights in OAuth 2?如何在 OAuth 2 中应用精细的每个内容权限?
【发布时间】:2015-03-26 16:27:23
【问题描述】:

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

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

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

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

用户 B 通过 SPA 访问 REST 服务的范围是: 日历.阅读 Calendar.Write 日历列表

但在日历 (id = 1) 的情况下,我们只需要一个 Calendar.Read 范围。

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

有什么规律吗?

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

【问题讨论】:

    标签: security oauth-2.0 authorization


    【解决方案1】:

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

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

    【讨论】:

    • 日历可能是包含一系列声明的声明? ej。 {'Claims':{'Calendar.Read':[1,5,8,12,19,45],'Calendar.Write':[1,3]}} 或者应该是令牌中的新属性,例如 '{Resources':[{'Calendar.1':'Calendar.Read'},'Calendar.2':'Calendar.Write']
    • 我会使用范围来获取信息,而不是声明。范围的格式是免费的。
    猜你喜欢
    • 1970-01-01
    • 2012-08-07
    • 2020-09-27
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    相关资源
    最近更新 更多