42keystone业务流程与开发实践_第1页
42keystone业务流程与开发实践_第2页
42keystone业务流程与开发实践_第3页
42keystone业务流程与开发实践_第4页
42keystone业务流程与开发实践_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、HC53511云计算V1R61.0袁静岚2017-08杨力凡新开发第四章 第二节Keystone业务流程与开发实践Token的使用Keystone API讲解Token的概念Token是什么:Token是一种用户访问凭证,用户向keystone提供一组有效的用户信息,keystone向用户返回一个token。Token包含这个用户的信息,用户的角色(role)信息,token的作用域(scope),token有效期(expiration)。用户通过获得的token作为凭证来访问其他的openstack服务。为什么使用Token:使用token访问api服务比使用用户名密码访问更加方便。Toke

2、n会完全包含用户名密码等信息。Token具有有效期,在客户端缓存token比缓存用户名密码更安全。创建token auth: identity: methods: password , password: user: name: cloud_admin, password: FusionSphere123, domain: id: default scope: project: name: admin, domain: id: default 申请token的方式,包括password, token。以下以password方式为例介绍用户信息,包括用户名、密码、用户所属domain。Token

3、作用域,可选。可以是project或者domain,用户必须跟这个scope具有角色绑定关系。没有scope的token中没有角色信息,大部分接口都无法访问。创建token创建Token时,不建议使用V2,建议使用V3。可以通过用户名密码(即password)方式来获取token,或者通过一个token来获取另一个token(token方式)。常用password方式。只有用户名和密码不能唯一确定一个用户,因为不同domain下可以有相同用户,所以这里加上了domain字段。或者可以使用用户ID。Scope决定token的角色,否则获取的token没有角色信息,无法访问大部分的接口。Token

4、交互用户从keystone申请token用户使用token访问服务被访问组件验证token用户得到返回消息 用户必须是有权限的用户。 Auth_token模块:验证token,与keystone进行验证。 Nova无需感知如何来验证token。Token的生成和验证-PKIPKI Token (默认):优点:Token验证在客户端即可完成(只要解密token id即可得到token数据),缓解keystone访问压力。缺点:token的长度会随着数据中心规模的变大而变大,并且token数据需要持久化完整token数据加密得到,适用比较大的多数据中心场景。Token的生成和验证-PKI流程Cli

5、ent会向Keystone提供用户信息,比如用户名和密码。Keystone对用户信息进行验证,验证是否有效。Keystone 服务器会生成对密钥,对于 OpenStack 中的服务,每个服务都会拥有一份 Keystone 的公钥和 CA 证书。 当 Keystone 接收到生成 Token 的请求,会创建 json 格式的对象,该对象包含了用户所授权的用户组、服务目录和 meta data等信息。 Keystone 会对这个 json 使用签名证书和私钥来签名和编码,生成 CMS 格式的Token。值得注意的是,在这个过程中,并没有对 Token 进行加密,如果此时 Token 在传输过程中被

6、黑客截取,用户信息将会暴露。 用户收到token后,把token缓存起来。在token的有效期内,可一直使用该token。用户调用其他服务的某个接口时,在请求的头中带上这个token。其他服务收到 API 请求后,会对 PKI Token 进行解码,拿到编码前的 json对象。在这个对象里已经包含了 Token 的有效期及其它相关信息。 验证成功后,给Client返回成功。没有验证成功的话,拒绝访问。Token的生成和验证-UUIDUUID Token:token的形式为一串32位的随机字符串。优点:长度恒定,配置简单。缺点:每次auth_token做认证时需要访问keystone服务端。给k

7、eystone带来很大的访问压力,并且token数据需要持久化。适用单数据中心或者很小型的多数据中心场景Token的生成和验证-UUID流程Client会向Keystone提供用户信息,比如用户名和密码。Keystone对用户信息进行验证,验证是否有效。如果信息验证有效,会生成一个uuid。并把uuid返回给Client。信息有效时,Keystone会把uuid和用户的信息在自己的数据库中保存。用户收到uuid后,把uuid缓存起来。在token的有效期内,可一直使用该token。注:uuid本身不包括用户信息。调用其他服务的某个接口时,在请求的头中带上这个token。其他服务获取token后

8、,把该token发给keystone验证。验证token是否有效,是否过期。验证成功后,给Client返回成功。没有验证成功的话,拒绝访问。Token的生成和验证-PKIZ/FernetPKIZ 格式:在 PKI 的基础上利用 zlib 对 Token 进行压缩处理,但是压缩的效果极其有限,一般情况下,压缩后的大小为 PKI Token的 90% 左右,所以 PKIZ 并不能友好的解决 Token size 太大问题。 Fernet格式:前三种 Token 都会持久性存于数据库,与日俱增积累的大量 Token 引起数据库性能下降。为了避免该问题,社区在 Kilo 版本提出了 Fernet To

9、ken,它携带了少量的用户信息,采用了对称加密,无需存于数据库中。Fernet 是专为 API token 设计的种轻量级安全消息格式,不需要存储于数据库,减少了磁盘的 IO,带来了定的性能提升。并且可以通过使用 Key Rotation 更换密钥来提高安全性。 Fernet Token 只加密必要的信息,长度般不超过 255Byte,从而也避免了 Token 过大的问题。Token验证流程Authtoken模块验证token流程:Token验证说明如果是uuid格式,则在keystone端验证是否有效,若有效,则把这个token信息加到请求的header中,然后进入下一个middleware

10、。如果是PKI格式,先验证是否失效,若未失效,则解析并判断token是否过期,若未过期,则把该token信息加到请求header中,进入下一个middleware。客户端处会对token信息做缓存,做缓存是为了一次验证,在有效期内内多次使用。Token不管有效或无效,都会进行缓存,在缓存中分别标记为有效或无效。Token的使用Keystone API讲解与开发实践Keystone功能Keystone主要API列表Keystone API讲解-环境准备为了用户方便的调用并查看OpenStack Rest接口,在调用API前,可准备如下环境。Windows系统Postman工具配置环境信息获取Fu

11、sionSphere Openstack的环境地址。连接到远程实验室,完成VPN的接入。登录OpenStack CPS系统。单击“配置 系统 DNS”,查看并获取Keystone的域名。本机配置IP映射。Keystone API讲解 下面通过简单的实例来演示下Keystone API的使用:在名为“Default”的Domain中创建一个名为“test_group”的Group和名为“test_project”的Project,在“test_group”中添加一个已存在的用户,将“test_group”中所有用户赋权限为新建Project的某个角色(role)。Keystone API讲解获取

12、token 访问方法:POST URI: 请求头:Content-Type:application/json 请求数据: auth:identity:methods:password,password:user:name:cloud_admin,password:FusionSphere123,domain:name:Default,scope:project:name:admin,domain:name:Default返回响应头header中X-Subject-Token字段的值即为token值,记录token值后作为调用其他接口消息头的X-Auth-Token的值。Keystone API

13、讲解Keystone API讲解创建Project 访问方法:POST URI: 请求头:Content-Type和X-Auth-Token 请求数据: project:description:This is the test project,domain_id: default,name:test_project创建Group 访问方法:POST URI: 请求头:Content-Type和X-Auth-Token 请求数据: group:description:This is the test group,domain_id: default,name:test_group 返回数据中记录

14、groupid。Keystone API讲解查看所有的User 访问方法:GET URI: 请求头:Content-Type和X-Auth-Token 返回数据中可找到名为“test_user”(举例)的用户,并记录userid。把User加入Group中 访问方法:PUT URI: 请求头:Content-Type和X-Auth-TokenKeystone API讲解查看当前所有的Role信息 访问方法:GET URI: 请求头:Content-Type和X-Auth-Token 返回数据中显示当前所有角色信息,记录需要赋权限给test_group的角色,比如“admin”。将名为“admin”的角色赋值给名为“test_Project”的Project中名为“test_group”的Group。 访问方法:PUT URI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论