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

付费下载

下载本文档

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

文档简介

HC53511,云计算,V1R6,1.0,袁静岚,2017-08,杨力凡,新开发,第四章第二节Keystone业务流程与开发实践,Token的使用KeystoneAPI讲解,Token的概念,Token是什么:Token是一种用户访问凭证,用户向keystone提供一组有效的用户信息,keystone向用户返回一个token。Token包含这个用户的信息,用户的角色(role)信息,token的作用域(scope),token有效期(expiration)。用户通过获得的token作为凭证来访问其他的openstack服务。为什么使用Token:使用token访问api服务比使用用户名密码访问更加方便。Token会完全包含用户名密码等信息。Token具有有效期,在客户端缓存token比缓存用户名密码更安全。,创建token,auth:identity:methods:password,password:user:name:cloud_admin,password:FusionSphere123,domain:id:defaultscope:project:name:admin,domain:id:default,创建token,创建Token时,不建议使用V2,建议使用V3。可以通过用户名密码(即password)方式来获取token,或者通过一个token来获取另一个token(token方式)。常用password方式。只有用户名和密码不能唯一确定一个用户,因为不同domain下可以有相同用户,所以这里加上了domain字段。或者可以使用用户ID。Scope决定token的角色,否则获取的token没有角色信息,无法访问大部分的接口。,Token交互,用户从keystone申请token用户使用token访问服务被访问组件验证token用户得到返回消息,用户必须是有权限的用户。Auth_token模块:验证token,与keystone进行验证。Nova无需感知如何来验证token。,Token的生成和验证-PKI,PKIToken(默认):优点:Token验证在客户端即可完成(只要解密tokenid即可得到token数据),缓解keystone访问压力。缺点:token的长度会随着数据中心规模的变大而变大,并且token数据需要持久化完整token数据加密得到,适用比较大的多数据中心场景。,Token的生成和验证-PKI流程,Client会向Keystone提供用户信息,比如用户名和密码。Keystone对用户信息进行验证,验证是否有效。Keystone服务器会生成对密钥,对于OpenStack中的服务,每个服务都会拥有一份Keystone的公钥和CA证书。当Keystone接收到生成Token的请求,会创建json格式的对象,该对象包含了用户所授权的用户组、服务目录和metadata等信息。Keystone会对这个json使用签名证书和私钥来签名和编码,生成CMS格式的Token。值得注意的是,在这个过程中,并没有对Token进行加密,如果此时Token在传输过程中被黑客截取,用户信息将会暴露。用户收到token后,把token缓存起来。在token的有效期内,可一直使用该token。用户调用其他服务的某个接口时,在请求的头中带上这个token。其他服务收到API请求后,会对PKIToken进行解码,拿到编码前的json对象。在这个对象里已经包含了Token的有效期及其它相关信息。验证成功后,给Client返回成功。没有验证成功的话,拒绝访问。,Token的生成和验证-UUID,UUIDToken:token的形式为一串32位的随机字符串。优点:长度恒定,配置简单。缺点:每次auth_token做认证时需要访问keystone服务端。给keystone带来很大的访问压力,并且token数据需要持久化。适用单数据中心或者很小型的多数据中心场景,Token的生成和验证-UUID流程,Client会向Keystone提供用户信息,比如用户名和密码。Keystone对用户信息进行验证,验证是否有效。如果信息验证有效,会生成一个uuid。并把uuid返回给Client。信息有效时,Keystone会把uuid和用户的信息在自己的数据库中保存。用户收到uuid后,把uuid缓存起来。在token的有效期内,可一直使用该token。注:uuid本身不包括用户信息。调用其他服务的某个接口时,在请求的头中带上这个token。其他服务获取token后,把该token发给keystone验证。验证token是否有效,是否过期。验证成功后,给Client返回成功。没有验证成功的话,拒绝访问。,Token的生成和验证-PKIZ/Fernet,PKIZ格式:在PKI的基础上利用zlib对Token进行压缩处理,但是压缩的效果极其有限,一般情况下,压缩后的大小为PKIToken的90%左右,所以PKIZ并不能友好的解决Tokensize太大问题。Fernet格式:前三种Token都会持久性存于数据库,与日俱增积累的大量Token引起数据库性能下降。为了避免该问题,社区在Kilo版本提出了FernetToken,它携带了少量的用户信息,采用了对称加密,无需存于数据库中。Fernet是专为APItoken设计的种轻量级安全消息格式,不需要存储于数据库,减少了磁盘的IO,带来了定的性能提升。并且可以通过使用KeyRotation更换密钥来提高安全性。FernetToken只加密必要的信息,长度般不超过255Byte,从而也避免了Token过大的问题。,Token验证流程,Authtoken模块验证token流程:,Token验证说明,如果是uuid格式,则在keystone端验证是否有效,若有效,则把这个token信息加到请求的header中,然后进入下一个middleware。如果是PKI格式,先验证是否失效,若未失效,则解析并判断token是否过期,若未过期,则把该token信息加到请求header中,进入下一个middleware。客户端处会对token信息做缓存,做缓存是为了一次验证,在有效期内内多次使用。Token不管有效或无效,都会进行缓存,在缓存中分别标记为有效或无效。,Token的使用KeystoneAPI讲解与开发实践,Keystone功能,Keystone主要API列表,KeystoneAPI讲解-环境准备,为了用户方便的调用并查看OpenStackRest接口,在调用API前,可准备如下环境。Windows系统Postman工具配置环境信息获取FusionSphereOpenstack的环境地址。连接到远程实验室,完成VPN的接入。登录OpenStackCPS系统。单击“配置系统DNS”,查看并获取Keystone的域名。本机配置IP映射。,KeystoneAPI讲解,下面通过简单的实例来演示下KeystoneAPI的使用:在名为“Default”的Domain中创建一个名为“test_group”的Group和名为“test_project”的Project,在“test_group”中添加一个已存在的用户,将“test_group”中所有用户赋权限为新建Project的某个角色(role)。,KeystoneAPI讲解,获取token访问方法:POSTURI:返回响应头header中X-Subject-Token字段的值即为token值,记录token值后作为调用其他接口消息头的X-Auth-Token的值。,KeystoneAPI讲解,KeystoneAPI讲解,创建Pr

温馨提示

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

评论

0/150

提交评论