文章目录

  • 导读
  • UAA 里所有可以配置权限的地方
  • UAA 里关于权限的几个概念
  • 5分钟学会 UAA 的权限配置
    • 请求 access token 的方式对权限配置的影响
    • 利用 access token 交换权限信息的方式对权限配置的影响

导读

本文说明 CloudFoundry User Account and Authentication (UAA) Server 的 权限系统是如何工作的。看完此文,您就会配置 UAA 的 Client 和 User 的权限,从而生成一个您需要的权限的 access token 了。

UAA 里所有可以配置权限的地方

  • users 表的 authorities 字段,这个字段暂时虽然叫权限,但是暂时没啥用
  • userinfo 表的 info 字段的 roles 属性
  • user group + external group 模块 + zone default groups
  • oauth_client_details 表的 authorities 字段和 scope 字段

UAA 里关于权限的几个概念

  • client scope :client crediential时取client的authorities字段,其他方式时,使用client表的scope字段
  • user scope:group模块 + zone default user group
  • request scope:client scope 和 user scope 和 用户请求的scope的交集

user scope 这个说法,就是 user 的 authority,注意不是 user 表的 authorities 字段存储的值,而是 group 模块存储的权限 zone default groups 的并集;users 表的 authorities 的值暂时没发现有任何作用。

5分钟学会 UAA 的权限配置

要怎么配置权限,首先看客户端请求 access token 和 利用 access token 得到权限信息的方式。

请求 access token 的方式对权限配置的影响

从 UaaAuthorizationRequestManager 中可以得出如下的结论,Access Token 上的 Scope 的计算过程如下:

  1. client scope的取值逻辑
    当为client_credentials类型时,client scope来源为client的authorities字段;如果是其他类型的话,client scope的来源为为client表中scope字段的值;
    如果用户输入了scopes,则client的scopes值为用户输入的scopes值剔除不在client scope来源中的scope,;如果用户没有传递scopes,
    当为client_credentials类型时,client scope的值为client的authorities字段的值;如果是其他类型的话,token的scope的值为client表中scope字段的值;
  2. user scope的取值逻辑为
    当为client_credentials类型时,此时没有用户参与,也就没有user scope;如果是其他类型的,user scope 为group模块存储的权限 + zone default groups的并集;
  3. 取交集client scope和user scope的交集;

结论就是,access token 的 scope 字段是 client scope 和 user scope 的交集;如果是 client_credential 模式,则就是 client scope;

也就是说:

如果客户端使用 client_credential 的模式,此时没有用户参与,token scope = client scope[client_credentials]=oauth_client_details 表的 authorities 字段;

如果客户端不是 client_credential 模式,此时有用户参与,那此时 token scope = client scope[!client_credentials] 和 user scope 的交集 = oauth_client_details 表的 scope 字段的值 和 user group 模块计算得出的 group 的交集;

利用 access token 交换权限信息的方式对权限配置的影响

从 OAuth2 and Friends Resource Server 一文可以看到,客户端获取用户的信息有三种方式,本地解密 access token ,check token endpoint 和 userinfo endpoint。

在 UAA 中,本地解密 access token ,check token endpoint 这两种方式本质上都是读取的 access token 里的 scope 字段,而 userinfo endpoint 接口读取的是 userinfo 表的 info 字段的 JSON 格式的值得 roles 属性。

CloudFoundry User Account and Authentication (UAA) Server‘s Scope System相关推荐

  1. CloudFoundry User Account and Authentication (UAA) Server Identity Provider

    相关类: org.cloudfoundry.identity.uaa.provider.oauth.XOAuthAuthenticationFilter org.cloudfoundry.identi ...

  2. CloudFoundry User Account and Authentication (UAA) Server Access Token

    UaaTokenService里面详细记录了clientdetails 和 users + userinfo是怎么映射到token中去的 userinfo表结构的info结构参见UserInfo类,r ...

  3. CloudFoundry User Account and Authentication (UAA) Server Approvals

    authz_approvals = authorized approvals by user for one client undecided scopes approved scopes denie ...

  4. CloudFoundry User Account and Authentication (UAA) Server Group

    groups存储的是一条条的权限,比如password,password.write,如果没有group_member表的话,password,password.write是没有什么关系的:group ...

  5. 创建Predix UAA(User Account and Authentication)

    作者:唐翊国,开发者生态资深经理,GE数字集团 23年工作经验,长期在杜邦.欧文斯科宁.庄信万丰等从事制造业信息化工作,规划.实施了大量MES.SAP ERP.LIMS.BPM等项目,积累了丰富的制造 ...

  6. 账号密码登录(Account password authentication)

    账号密码登录(Account password authentication) 直到输入账号正确才能输入密码(3次验证机会)并提示剩余次数,(正确的账号和密码信息来自properties文件读取匹配) ...

  7. Windows Server 2016及System Center 2016正式商用

    Windows Server 2016  及 System Center 2016 现已正式商用.作为微软全新一代的服务器操作系统和数据中心管理平台,它们将为企业 IT 带来全面的性能与安全性提升:为 ...

  8. 翻译 Windows Server 2016和System Center 2016 技术预览版4 使创新更容易

    英文标题:Make innovation easier with Windows Server 2016 and System Center 2016 Technical 中文标题:Windows S ...

  9. [转]Windows Server 2012 和 System Center 2012 SP1,Virtual Machine Manager 中启用的软件定义的网络...

    消除障碍,实现云环境的灵活性.高效性和多租户功能 当 我们与客户谈论其数据中心时,我们发现虚拟化并未能充分发挥其潜能.客户对计算机虚拟化的优势大为认可,但他们希望能够获得更高程度的 IT 灵活性.客户 ...

最新文章

  1. python 获取打印的内容并保存到记事本里面
  2. PCL调错:(3)error C2589“(“:“::“右边的非法标记
  3. 老李分享:系统可用性评估
  4. java 填充pdf_Java如何创建和填充PDF表单域(代码示例)
  5. Linux 高性能服务器编程——socket选项
  6. linux下安装java环境(ubuntu和centos)
  7. Java日期格式化SimpleDateFormat
  8. vue_过滤器_note
  9. c语言编译怎么查看错误,C语言编译器的错误信息
  10. VBA 函数 过程之间互相调用的技巧
  11. Premiere 视频基本调色
  12. 思科模拟器配置静态路由(下一跳使用IP)
  13. Mysql之DDL(数据定义语言)
  14. codeforces 158E. Phone Talks(dp)
  15. 聚观早报|苹果默认不再接受隔空投送;Mete被裁员工将获薪水补偿
  16. C语言编程 | 转义字符
  17. 如何设置potplayer播放器把人声凸显出来并降噪?
  18. 微信小程序中实现瀑布流
  19. 【Scratch3.0案例教学】手把手教小朋友Scratch3.0制作消灭新冠病毒游戏 scratch案例教学
  20. OceanBase 架构初探

热门文章

  1. 飞冰 - 让前端开发简单而友好
  2. Unity笔记之WebGL下载图片、视频
  3. CSS3_03_图片_按钮_分页
  4. 无人机航测时如何正确布设像控点
  5. 类模板、变量模板、别名模板 基础知识点二
  6. Idea项目启动慢一直Build
  7. win10自带抓包工具_win10是否有抓包工具
  8. Redis+protostuff 实现对象序列化保存,反序列化获取
  9. 名帖117 祝允明 小楷《东坡记游卷》
  10. No modules name “XXX”究极解决办法,踩了很多坑后亲测可行的解决方案