openstack身份认证与API请求流程
一、概况
1. 请求认证token时,需发送的认证信息包括:
2. 如果认证成功,会获得认证token
3. 在发送的API请求中将认证token填入X-Auth-Token字段。可以一直使用这个认证token发送API请求,直到任务完成或出现401非认证错误。
4. 如果出现401非认证错误,可以重新请求一个认证token。
二、详细流程举例
说明:以下例子会使用到cURL( http://curl.haxx.se/)和OpenStack APIs( http://developer.openstack.org/api-ref.html)
1、认证过程
使用如下命令请求认证token:
$ curl -i 'http://127.0.0.1:5000/v2.0/tokens' -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{"auth": {"tenantName": "admin", "passwordCredentials": {"username": "admin", "password": "secretsecret"}}}'
如果认证成功,将获得200 OK响应报文,其中响应body包含了一个token和过期时间,前者格式为"id":"token
",后者格式为"expires":"datetime
"。详细情况如下:
HTTP/1.1 OK
Vary: X-Auth-Token
Content-Type: application/json
Content-Length:
Date: Wed, Nov :: GMT
{
"access":
{
"token": {
"issued_at": "2013-11-06T20:06:24.113908",
"expires": "2013-11-07T20:06:24Z",
"id": "{token}",
"tenant": {
"description": null,
"enabled": true,
"id": "604bbe45ac7143a79e14f3158df67091",
"name": "admin"
}
},
"serviceCatalog": [
{
"endpoints": [
{
"adminURL": "http://166.78.21.23:8774/v2/604bbe45ac7143a79e14f3158df67091",
"region": "RegionOne",
"internalURL": "http://166.78.21.23:8774/v2/604bbe45ac7143a79e14f3158df67091",
"id": "9851cb538ce04283b770820acc24e898",
"publicURL": "http://166.78.21.23:8774/v2/604bbe45ac7143a79e14f3158df67091"
}
],
"endpoints_links": [],
"type": "compute",
"name": "nova"
},
... "user": {
"username": "admin",
"roles_links": [],
"id": "3273a50d6cfb4a2ebc75e83cb86e1554",
"roles": [
{
"name": "admin"
}
],
"name": "admin"
},
"metadata": {
"is_admin": ,
"roles": [
"b0d525aa42784ee0a3df1730aabdcecd"
]
}
}
}
2、发送API请求过程
说明:以下使用 Identity API (http://developer.openstack.org/api-ref-identity-v3.html)和Compute API (http://developer.openstack.org/api-ref-compute-v2.html)的请求举例。
2.1 使用Identity API 请求tenants list,如下:
$ curl -i -X GET http://166.78.21.23:35357/v2.0/tenants -H "User-Agent: python-keystoneclient" -H "X-Auth-Token: token"
结果内容:
{
"tenants_links": [],
"tenants": [
{
"description": null,
"enabled": true,
"id": "3eddf34c2f814bd5bc50a382f8fba1c6",
"name": "demo"
},
{
"description": null,
"enabled": true,
"id": "604bbe45ac7143a79e14f3158df67091",
"name": "admin"
},
{
"description": null,
"enabled": true,
"id": "78323d3574e6421b98fe5894475c69fe",
"name": "service"
},
{
"description": null,
"enabled": true,
"id": "da73856734d84ec29958b048d8708d82",
"name": "invisible_to_admin"
},
{
"description": null,
"enabled": true,
"id": "ee30a93eaade41acbcf210780dd7a0ba",
"name": "alt_demo"
}
]
}
2.2 使用Compute API 请求servers list,如下:
$ curl -v -H "X-Auth-Token:token" http://208.123.85.197:8774/v2/tenant_id/servers
结果内容:
{
"server": {
"adminPass": "MVk5HPrazHcG",
"id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
"links": [
{
"href": "http://openstack.example.com/v2/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
"rel": "self"
},
{
"href": "http://openstack.example.com/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
"rel": "bookmark"
}
]
}
}
三、详细流程图
如果给出tenant直接从以下步骤开始:
四、keystone
keystone的管控主要针对三个方面:
1、用户,对用户进行认证
2、服务,管理服务的访问点
3、权限,即role,这里的role相对比较复杂:
role的定义不只依靠keystone,也依赖于各个服务组件对role的认可,其中由于user可以属于多个project,所以仅对user是无法管理权限的,只能针对(user,project)对进行权限管理。
1)权限管理抽象成role后,keystone负责记录并绑定role和(user,project)对
2)各服务组件在其自身的policy.json中定义role和各个具体操作之间的认可关系。
整个流程:
1.用户首先到keystone认证,获取token,同时会获取service endpoints
2.用户使用token访问心仪的service endpoint,这里token只是管控user对service的进入,但是不管控user在service里面的具体operation
3.service会根据用户的请求识别role,然后检测policy.json里面该role所绑定的operation,以此来许可operation
参考文章:
http://docs.openstack.org/api/quick-start/content/index.html#authenticate
http://docs.openstack.org/icehouse/install-guide/install/yum/content/keystone-concepts.html
openstack身份认证与API请求流程的更多相关文章
- Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(三)
在前面两篇文章中,我介绍了基于IdentityServer4的一个Identity Service的实现,并且实现了一个Weather API和基于Ocelot的API网关,然后实现了通过Ocelot ...
- 【React全家桶入门之十】登录与身份认证
细致想想,我们的后台系统还没有一个登录功能,太不靠谱,赶紧把防盗门安上! SPA的鉴权方式和传统的web应用不同:因为页面的渲染不再依赖服务端,与服务端的交互都通过接口来完毕,而REASTful风格的 ...
- react 项目实战(九)登录与身份认证
SPA的鉴权方式和传统的web应用不同:由于页面的渲染不再依赖服务端,与服务端的交互都通过接口来完成,而REASTful风格的接口提倡无状态(state less),通常不使用cookie和sessi ...
- RESTful Api 身份认证安全性设计
REST是一种软件架构风格.RESTful Api 是基于 HTTP 协议的 Api,是无状态传输.它的核心是将所有的 Api 都理解为一个网络资源.将所有的客户端和服务器的状态转移(动作)封装到 H ...
- RESTful Api 身份认证中的安全性设计探讨
REST 是一种软件架构风格.RESTful Api 是基于 HTTP 协议的 Api,是无状态传输.它的核心是将所有的 Api 都理解为一个网络资源.将所有的客户端和服务器的状态转移(动作)封装到 ...
- api接口对于客户端的身份认证方式以及安全措施
转载 基于http协议的api接口对于客户端的身份认证方式以及安全措施 由于http是无状态的,所以正常情况下在浏览器浏览网页,服务器都是通过访问者的cookie(cookie中存储的jsession ...
- 【译】使用Jwt身份认证保护 Asp.Net Core Web Api
原文出自Rui Figueiredo的博客,原文链接<Secure a Web Api in ASP.NET Core> 摘要:这边文章阐述了如何使用 Json Web Token (Jw ...
- 最简单易懂的Spring Security 身份认证流程讲解
最简单易懂的Spring Security 身份认证流程讲解 导言 相信大伙对Spring Security这个框架又爱又恨,爱它的强大,恨它的繁琐,其实这是一个误区,Spring Security确 ...
- Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(四)
在上一讲中,我们已经完成了一个完整的案例,在这个案例中,我们可以通过Angular单页面应用(SPA)进行登录,然后通过后端的Ocelot API网关整合IdentityServer4完成身份认证.在 ...
随机推荐
- 手动配置网卡配置文件ifcfg-eth0
linux 其他知识目录 原文链接:https://www.cnblogs.com/arvintang/p/5990599.html 网络接口配置文件[root@localhost ~]# cat / ...
- ES6的新特性(3)——变量的解构赋值
变量的解构赋值 数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). let a = 1; let b = 2; le ...
- Manacher算法——求最长回文子串
首先,得先了解什么是回文串.回文串就是正反读起来就是一样的,如“abcdcba”.我们要是直接采用暴力方法来查找最长回文子串,时间复杂度为O(n^3),好一点的方法是枚举每一个字符,比较较它左右距离相 ...
- Right-BICEP 测试四则运算程序
测试方法: Right-BICEP 测试计划: 1.边界测试是否正确 2.负数表示是否实现 3.是否有乘除法 4.是否可以选择题目数量 5.是否有输出方式 6.是否有括号 7.是否有重复查询 ...
- 【IdentityServer4文档】- 使用密码保护 API
使用密码保护 API OAuth 2.0 协议允许资源拥有者给客户端密码授权:客户端向令牌服务发送用户密码,以获取代表该用户的访问令牌. 该规范建议仅将“资源所有者密码授予”用于“可信”(或旧版)应用 ...
- 周总结<3>
经过了一周的学习,我们在html以及C语言方面又有的新的知识点的学习,包括计算机导论也学会了路由器的设置. html 鼠标事件 C 二叉树的遍历代码 计算机导论 路由器的设置 Html案例: < ...
- Struts2:<s:action>的使用
<s:action name=”actionName” namespace=”/” executeResult=”true”> <s:action>可以在jsp中直接调用act ...
- 使用fprof基本步骤
$erl -name a@localhost -setcookie abc -remsh b@localhost >fprof:trace([start, {file, "/home/ ...
- JavaScript数组去重的四种方法
今天,洗澡的想一个有趣的问题,使用js给数组去重,我想了四种方法,虽然今天的任务没有完成,5555: 不多说,po代码: //方法一:简单循环去重 Array.prototype.unique1 ...
- 【第一周】PSP
日期 C类别 C内容 S开始时间 E结束时间 I间隔(单位:分钟) T净时间(单位:分钟) 9月2日 编程 词频统计 7:35 9:35 10 110 9月3日 读书 构建之法 8:00 9:00 5 ...