博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenStack Identity service简介
阅读量:4179 次
发布时间:2019-05-26

本文共 2881 字,大约阅读时间需要 9 分钟。

Identity service,对应代码项目为Keystone,是OpenStack默认的身份管理系统,是OpenStack众多服务中的一个,用以对用户进行认证和鉴权,是访问OpenStack其他服务的基础。

Identity service支持基于Token的认证和基于“用户-服务”的授权,以REST API的形式提供服务。

1.Identity service的版本

  • Identity service v1,没有正式发布。
  • Identity service v2,从OpenStack的Mitaka版本开始deprecated,在OpenStack的Queens版本移除主要功能,仅保留其中的ec2tokens API。至OpenStack的T版本将完全移除。
  • Identity service v3,OpenStack的Liberty版本开始提供。

2.Identity service的安装

1)安装MySQL数据库管理系统

CREATE DATABASE keystone

2)安装(包括Apache HTTP服务器和mod_wsgi模块)

yum install openstack-keystone httpd mod_wsgi

3)配置文件/etc/keystone/keystone.conf

4)使用keystone命令行工具keystone-manage

  • 初始化
  • 启动,管理端口http://controller:35357/v3/,公共服务端口http://controller:5000/v3/

3.Identity service的认证机制

采用PKI,Public Key Infrastructure,三要素如下:

  • public/private key pair
  • X509 certificate
  • CA

4.Identity service的Token

1)token的组成

  • user_id
  • domain_id
  • project_id

2)token的作用域(scopes)

  • unscoped token, 只是为了在Keystone中标明某用户存在,但是没有任何授权,该类型的Token还必须生成有作用域的Token
  • project-scoped token,基于project作用域的Token
  • domain-scoped token,基于domain作用域的Token

3)token的类型(types)

  • UUID,默认token
  • fernet,非持久的token
  • PKI,过时了,包含认证上下文和服务编目的签名档
  • PKIZ,过时了,压缩了的PKI

5. 通过cURL获取token的方法

1)只标明身份,无任何权限的unscoped token

curl -i \  -H "Content-Type: application/json" \  -d '{ "auth": {    "identity": {      "methods": ["password"],      "password": {        "user": {          "name": "myName",          "domain": { "id": "default" },          "password": "myPass"        }      }    }  }}' \  "https://my-openstack-cloud:5000/v3/auth/tokens"

注意:这里的身份认证采用name/password,另外以id的方式给出了其所在的domain(id="default")。命令执行成功即返回access token,用于后续操作。

2)根据project设置访问权限的project-scoped token

curl -i \  -H "Content-Type: application/json" \  -d '{ "auth": {    "identity": {      "methods": ["password"],      "password": {        "user": {          "name": "myName",          "domain": { "id": "default" },          "password": "myPass"        }      }    },    "scope": {      "project": {        "name": "myProject",        "domain": { "id": "default" }      }    }  }}' \  "https://my-openstack-cloud:5000/v3/auth/tokens"

注意与unscoped token的比较,这里通过请求参数scope给出了token能够访问的范围,具体到一个domain中的一个project。

3)根据domain设置访问权限的domain-scoped token

curl -i \  -H "Content-Type: application/json" \  -d '{ "auth": {    "identity": {      "methods": ["password"],      "password": {        "user": {          "name": "myName",          "domain": { "id": "default" },          "password": "myPass"        }      }    },    "scope": {      "domain": {        "id": "default"      }    }  }}' \  "https://my-openstack-cloud:5000/v3/auth/tokens"

注意与unscoped token的比较,这里通过请求参数domain给出了token能够访问的范围。这样的token就能够访问该domain下的所有project。

 

参考文献:

https://wiki.openstack.org/wiki/Keystone
https://github.com/openstack/keystone
https://docs.openstack.org/developer/keystone/
http://specs.openstack.org/openstack/keystone-specs/#identity-v3-api
http://specs.openstack.org/openstack/keystone-specs/#v2-0-api
 

转载地址:http://rtlai.baihongyu.com/

你可能感兴趣的文章
简述JAVA运算符
查看>>
简易ATM源代码及运行结果
查看>>
简述Java中的简单循环
查看>>
用JAVA实现各种乘法表
查看>>
for双重循环实现图形
查看>>
Java类和对象基础
查看>>
简述Java继承和多态
查看>>
Java中Arrays工具类的用法
查看>>
简述JAVA抽象类和接口
查看>>
JAVA常用基础类
查看>>
简述Java异常处理
查看>>
简述Java集合框架
查看>>
jQuery+ajax实现省市区(县)下拉框三级联动
查看>>
Spring中的AOP 面向切面编程
查看>>
简述Spring中的JDBC框架
查看>>
MyBatis 动态SQL
查看>>
Spring MVC体系结构和处理请求控制器
查看>>
浏览器内核的整理稿
查看>>
暴力搜索内存空间获得API的线性地址
查看>>
CTF编码
查看>>