【问题标题】:Difference between scope and authority in UAAUAA中范围和权限之间的区别
【发布时间】:2016-06-11 23:46:08
【问题描述】:

在 UAA 中有两个概念,权限和范围。

这些概念似乎重叠。我想知道确切的区别和目的

例如,oauth.login

【问题讨论】:

    标签: cloudfoundry-uaa


    【解决方案1】:

    范围是代表用户的 OAuth 客户端的权限。它们在获得具有以下授权类型之一的用户令牌后被授予:auth_code, password, implicit。范围表示允许应用程序代表用户访问的内容(称为委托授权)。

    权限是 OAuth 客户端代表自己行事的权限,没有用户参与。它们是在获取grant_type 为client_credentials 的客户端令牌后授予的。典型用途是应用程序或 API 尝试在没有用户参与的情况下使用自己的凭据访问资源。

    在 UAA 中,oauth.login 是系统级权限,并被 login-server 项目的旧实现使用(当 UAA 和 Login Server 是单独的组件时)。此权限允许登录服务器的管理员级别访问。

    【讨论】:

      【解决方案2】:

      1) 权限和角色是权限的弹簧安全措辞。它没有在 OAuth2 规范中定义。

      2) 范围由 OAuth2 定义。它旨在定义最终用户允许每个客户端代表其执行的操作(从授权服务器到资源服务器的信息)。

      因此,授予客户端的权限应该始终是最终用户权限的子集:所有可能的范围 => 所有用户权限;范围越小,权限越少。

      一个技巧,在“客户端”OAuth2 流程中,客户端是最终用户 => 范围在这种情况下没有意义(客户端不是代表某人进行身份验证,而是以其自己的名义)。

      默认的 OAuth2 spring-security 转换器将范围转换为权限。对我来说,这会带来很多混乱,不应该发生。范围声明应改为用于过滤最终用户权限。

      最新需要编写和配置您自己的权限转换器,这对于 JWT 来说已经可以,但还不能用于自省(应该来,为此打开一张票)

      此外,OAuth2 规范中的任何内容都不需要权限(弹簧权限和角色)包含在令牌中(使用私有声明)或由授权服务器管理。资源服务器可以合法地使用主题声明从数据库中检索它,然后“范围”它(根据授予客户端的范围过滤最终用户权限)。

      【讨论】:

        猜你喜欢
        • 2021-03-28
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        • 2015-03-26
        • 2011-07-31
        • 1970-01-01
        • 1970-01-01
        • 2015-10-09
        相关资源
        最近更新 更多