`
jamie.wang
  • 浏览: 347623 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

CF权限控制

uaa 
阅读更多

接口访问控制

默认的接口访问

create(POST),update(PUT)和delete操作需要cloud_controller.admin的权限范围(scope)

read(GET)操作,需要cloud_controller.admin的权限范围或用户已经登录

权限验证流程

默认的权限验证

这里讨论的都是基本的权限验证,在基类中定义的。

每一个API接口调用时,在业务方法调用前先从header的auth_token中解析了用户信息,放在当前线程的context中。

 

参考:front_controller.rb
before do
auth_token = env["HTTP_AUTHORIZATION"] # 获取auth_token
VCAP::CloudController::Security::SecurityContextConfigurer.new(@token_decoder).configure(auth_token) # 解析token并设置到当前线程的context中
validate_scheme
end

接下来,做接口基本认证检查

先检查是否当前接口是否需要认证

在每一个model的controller类中定义了可以不需要认证即可调用的接口,如:buildpack_bits_controller定义了download方法不需要认证

allow_unauthenticated_access only: :download

如果需要认证,则检查是否从auth_token中解析出了user,如果连user都没有就无从谈认证了

最后验证当前用户是否能访问该接口

如:

validate_access(:create, obj, user, roles)

对于拥有cloud_controller.admin权限范围的用户,都通过

 

参考:base_access.rb
def read_with_token?(_)
  admin_user? || has_read_scope?
end
def create_with_token?(_)
  admin_user? || has_write_scope?
end
def update_with_token?(_)
  admin_user? || has_write_scope?
end
def delete_with_token?(_)
  admin_user? || has_write_scope?
end

这里的admin_user是看是否拥有cloud_controller.admin权限范围

参考:roles.rb
def admin?
  @scopes.include?(CLOUD_CONTROLLER_ADMIN_SCOPE)
end

查看是否拥有read权限则是查看是否拥有cloud_controller.read权限范围

参考:base_access.rb
def has_read_scope?
  VCAP::CloudController::SecurityContext.scopes.include?('cloud_controller.read')
end

查看是否拥有create/update/delete权限则是查看是否拥有cloud_controller.write权限范围

参考:base_access.rb
def has_write_scope?
  VCAP::CloudController::SecurityContext.scopes.include?('cloud_controller.write')
end

具体接口的权限验证

具体的接口还可以自定义权限验证。

这里以app为例

参考:app_access.rb
module VCAP::CloudController
  class AppAccess < BaseAccess
    def create?(app)
      return true if admin_user?
      return false if app.in_suspended_org?
      app.space.developers.include?(context.user)
    end
    def update?(app)
      create?(app)
    end
    def delete?(app)
      create?(app)
    end
    def read_env?(app)
     return true if admin_user?
     app.space.developers.include?(context.user)
    end
    def read_env_with_token?(app)
      read_with_token?(app)
    end
  end
end

从代码可以看出,create/update/delete/read_env都用了同样的权限控制:用户拥有cloud_controller.admin或者是space developer角色

图示

下面的活动图更清晰的描述了创建应用的权限验证流程



 

重要的几个权限验证说明

注意这里没有提到的则是用默认的规则

组织更新

需要有cloud_controller.admin权限范围或者Organization Manager角色

空间

创建、删除

需要有cloud_controller.admin权限范围或者Organization Manager角色

更新

需要有cloud_controller.admin权限范围或Organization Manager角色或Space Manager角色

用户

用户API操作在CF这边,权限都是默认权限控制, 但用户很多信息的修改都要调用uaa的接口,需要有scim相关权限范围

关于安全

CF这边从HTTP头中取出token后,CF这边直接用jwt协议decode token,然后把其中的签名部分和uaa的签名对比,如果签名正确,则信任token的其他数据,并没有调用uaa接口去验证其他数据(如:用户名、权限范围等)。

如果在uaa修改了用户的权限范围,client则需要重新获取token,CF不会主动更新token除非token已经过期,CF会认为token非法。

  • 大小: 89.6 KB
分享到:
评论

相关推荐

    ThinkPHP的RBAC,基于角色的权限控制-下载地址+2011年最新.txt

    - 将用户分配到不同的角色中,实现权限控制。 - 在用户登录时,根据其所属的角色来判断是否具有相应的操作权限。 ### 下载资源 根据给定的信息,提供了两个下载地址: - 地址1:[http://dl.dbank.com/c0j453e7tx]...

    oracle 权限控制

    Oracle权限控制系统是数据库管理的重要组成部分,它用于确保只有授权的用户和进程才能访问特定的数据和执行特定的操作。本文档主要探讨了如何在Oracle环境中实施权限控制,包括对历史SQL语句的保存、登录IP地址的...

    CF-Root-SGS3-v6.0.zip_CF-Root-SGS3-V6.0_ROOT

    在Android操作系统中,root权限意味着用户可以完全控制手机,访问和修改系统级别的文件,安装自定义固件,以及禁用预装应用等。 描述中的"CF-Root-SGS3-v6.0 you can root your device"进一步确认了这个压缩包的...

    CF Image host v1.41 简繁汉化版.rar

    CF Imges1.41功能: 1.图片上传外链 2.缩略图、原图 3.流量统计、流量控制、单文件大小控制 4.后台控制 5.自由水印 6.一键GGAD 7.删除链接 8.图片权限 9.短链接生成 10.自动删除 11.6套模板 12.图片格式...

    linux下cf卡的底层驱动代码

    硬件接口层直接与CF卡控制器通信,而文件系统接口层则处理上层文件系统的请求。 在描述中提到的"kernel"部分,即Linux内核驱动,通常包括以下组件: 1. **探测和初始化**:驱动程序会在系统启动时探测是否存在CF卡...

    黑苹果wifi驱动CF-WU810N.rar

    用户在下载并解压此压缩包后,需要按照特定步骤将驱动安装到系统中,以便让操作系统能够识别并控制该USB网卡。 安装黑苹果驱动的过程通常包括以下步骤: 1. **备份系统**:在进行任何系统修改前,建议先备份当前...

    cf学生成绩管理系统加论文

    4. **身份验证与权限控制**:为了确保信息安全,系统可能实现了用户登录和权限验证功能,如JWT(JSON Web Tokens)或OAuth协议。 5. **API设计**:可能使用RESTful API设计原则,提供对外的数据交换接口。 6. **...

    IBM DB2官方课程CF12

    7. 安全性和权限管理:了解如何设置用户权限,控制访问,以及如何使用角色和授权来管理数据库的安全性。 8. 高可用性和故障恢复:课程可能涉及备份和恢复策略,以及复制技术,如DB2 pureScale和PureData System for...

    介绍ARM7系统中实现CF卡存储的文件系统设计

    文件系统层需要实现目录管理、文件分配、权限控制等功能。 4. **挂载和卸载**:在系统启动或需要访问CF卡时,需要挂载文件系统。挂载过程包括初始化文件系统,检查其完整性,并将其关联到一个特定的挂载点。卸载则...

    CF自动准备CF自动准备CF自动准备

    4. **最佳实践**:了解自动化部署的最佳实践,如模板分离、版本控制、错误处理和日志记录。 5. **安全性**:理解如何设置和应用安全策略,如IAM角色和权限,以及如何保护敏感信息。 6. **监控和调试**:学习如何使用...

    c# .net cf实现Windows Mobile 拍照录像功能

    2. 权限管理:确保应用有足够的权限访问摄像头和存储设备。 3. 错误处理:添加适当的错误处理代码,以应对相机不可用、存储空间不足等情况。 4. 性能优化:考虑到移动设备的性能限制,应尽可能优化代码,减少内存...

    camforg多码,CF多码

    2. **在线游戏**:许多在线游戏也使用类似的机制来控制玩家的访问权限,如发放限时或永久性的会员资格、特殊道具等。 3. **服务授权**:“camforg多码”或“CF多码”也可能用于某些在线服务的授权管理,比如云存储...

    电子通信设计资料基于8051的CF卡文件系统的实现

    - **权限控制**:为不同用户设置不同的文件访问权限; - **日志记录**:记录文件系统的操作历史,便于故障恢复。 #### 知识点七:性能优化技巧 为了提高基于8051微控制器的CF卡文件系统的整体性能,可以采取以下几...

    CF Image host v1.4.1 简繁汉化版

    CF Imges1.41功能:1.图片上传外链2.缩略图、原图3.流量统计、流量控制、单文件大小控制4.后台控制5.自由水印6.一键GGAD7.删除链接8.图片权限9.短链接生成10.自动删除11.6套模板12.图片格式控制13.页面显示、隐藏14...

    中控仪表C3600批量控制器选型资料.pdf

    此外,还可以选择是否配备以太网通讯接口、CF卡接口、打印接口等配件。 C3600批量控制器的供电要求为常规选型(100~240)VAC、(47~63)Hz或特殊选型24VDC,功耗不超过30VA。工作环境条件要求为运输与贮藏条件:...

    cf易语言XSX如入历程

    例如,XSX可能有更严格的权限控制,需要更高的权限才能注入进程。此外,微软的Xbox Live服务也可能对注入行为进行检测和阻止。因此,开发者需要对XSX的系统架构和安全策略有深入理解,以确保注入过程的稳定性和隐蔽...

    I9305 Root权限获取

    在Android操作系统中,root权限是指用户获得对设备的最高控制权,能够访问和修改系统级别的文件和设置。对于三星Galaxy S3(型号I9305)的用户来说,获取root权限意味着可以自定义手机功能,安装需要系统权限的应用...

    安国CF8708量产工具CD-ROM全套工具 亲自试用

    2. **FC MpTool v04.03.21**:FC(Flash Controller)MpTool是另一种常见的U盘管理工具,主要用于处理各种闪存控制器。版本v04.03.21可能提供了针对特定问题的修复和性能提升。此工具可以进行固件升级,检查设备信息...

    DB2官方课程CF237

    课程会讲解DB2的权限和角色管理,如何设置用户访问控制,以及如何使用加密技术保护敏感数据。 5. **备份与恢复**:数据备份和恢复策略是确保业务连续性的关键。课程会介绍DB2的备份类型(如完整备份、增量备份)和...

    IBM DB2 CF 23 教材加练习

    7. 事务和并发控制:理解ACID属性,学习如何处理并发操作,保证数据的一致性和完整性。 8. 安全性:学习如何设置用户权限,管理角色,以及实施数据库级别的安全策略。 9. 备份与恢复:理解DB2的备份策略,学会如何...

Global site tag (gtag.js) - Google Analytics