Keystone中间件WSGI环境变量总结
OpenStack keystonemiddleware接收前一个WSGI过滤器传来的WSGI环境信息,进行验证工作后传递给下一个中间件,本文探讨keystone中间件究竟有哪些WSGI环境变量。
说明:下文中以 HTTP\_ 开头的header对应标准http header, 以 HTTP_X 开头的header对应扩展的http header,WSGI环境信息用于在不同的WSGI组件间传递统一格式的内容,这些环境信息来自于HTTP请求或其他的WSGI组件,因此格式与HTTP中header字段的格式不同。
keystone中间件WSGI环境变量与HTTP header字段总结:
- 从keystoneclient或用户的调用中获得的有:
HTTP_X_AUTH_TOKEN
HTTP请求中传入的用户令牌,对应于HTTP请求header中的'X-Auth-Token'字段;
2.
HTTP_X_SERVICE_TOKEN
HTTP请求中传入的服务令牌;
- 用于不同组件间通信的有:
WWW-Authenticate
返回给用户的HTTP header,告诉他们获取新令牌的keystone终端URL
- 添加到请求中供OpenStack其他服务使用的有:
当使用复合认证(即同时提供用户令牌和服务令牌)时,关于服务的额外header会被添加。他们与标准http header的格式相同,只不过多加了一个_SERVICE_。如果没有提供服务令牌,那么这些headers就不存在。
1.
HTTP_X_IDENTITY_STATUS
只能取'Confirmed' 或 'Invalid',同时如果中间被配置成'delay_auth_decision'模式运行的话,那么下游的服务将只会接收到'Invalid';
2.
HTTP_X_DOMAIN_ID,
HTTP_X_SERVICE_DOMAIN_ID
域ID,只有v3版的作用范围为域的令牌会包含该项;
3.
HTTP_X_DOMAIN_NAME,
HTTP_X_SERVICE_DOMAIN_NAME
域名称,只有v3版的作用范围为域的令牌会包含该项;
4.
HTTP_X_PROJECT_ID,
HTTP_X_SERVICE_PROJECT_ID
项目ID,只有v3版的作用范围为项目的令牌和v2版的作用范围为租户的令牌会包含该项;
5.
HTTP_X_PROJECT_NAME
HTTP_X_SERVICE_PROJECT_NAME
项目名称,只有v3版的作用范围为项目的令牌和v2版的作用范围为租户的令牌会包含该项;
6.
HTTP_X_PROJECT_DOMAIN_ID,
HTTP_X_SERVICE_PROJECT_DOMAIN_ID
拥有项目的域ID,只有v3版的作用范围为项目的令牌会包含该项,一旦该项设置,假定在该域内的PROJECT_NAME唯一。
7.
HTTP_X_PROJECT_DOMAIN_NAME
HTTP_X_SERVICE_PROJECT_DOMAIN_NAME
拥有项目的域名称,只有v3版的作用范围为项目的令牌会包含该项,一旦该项设置,假定在该域内的PROJECT_NAME唯一。
8.
HTTP_X_USER_ID,
HTTP_X_SERVICE_USER_ID
用户ID或服务的用户ID。
9.
HTTP_X_USER_NAME,
HTTP_X_SERVICE_USER_NAME
用户名称或服务的用户名称。
10.
HTTP_X_USER_DOMAIN_ID,
HTTP_X_SERVICE_USER_DOMAIN_ID
用户所在的域ID,一旦该项设置,假定在该域内的USER_NAME唯一。
11.
HTTP_X_USER_DOMAIN_NAME,
HTTP_X_SERVICE_USER_DOMAIN_NAME
用户所在的域名称,一旦该项设置,假定在该域内的USER_NAME唯一。
12.
HTTP_X_ROLES,
HTTP_X_SERVICE_ROLES
角色名称,采用逗号隔开且大小写敏感。
13.
HTTP_X_SERVICE_CATALOG
Json格式编码的服务目录(可选),注意尽管该header中含有'SERVICE',却对应的是用户令牌,由于用户令牌中包含的目录可能已经非常大,因此不再指定服务令牌的目录,这样可以节省HTTP的header空间。
- 其他环境变量:
1.
keystone.token_info
验证令牌过程中发现的该令牌的相关信息,可能同时包括keystone服务器返回的验证后的信息和关于项目、用户等的基本信息。
2.
keystone.token_auth
一个keystoneclient认证插件,可能和类`keystoneclient.session.Session`一起使用,该插件将会加载要提供给auth_token中间件的认证数据。
Keystone中间件WSGI环境变量总结的更多相关文章
- (原创)OpenStack服务如何使用Keystone(三)---详细配置Keystone中间件
(一)Keystone端的操作 (二)如何在OpenStack服务上部署Keystone中间件 (三)详细配置keystonemiddleware 前文我们介绍了如何部署Keystone中间件以及中间 ...
- 转: 谈JAVA_OPTS环境变量不起作用
谈JAVA_OPTS环境变量不起作用 2016-6-14 11:12 最近在处理运行一个java应用时,老是出现java.lang.OutOfMemoryError: Java heap space. ...
- (原创)OpenStack服务如何使用Keystone (二)---部署和配置Keystone中间件
(一)Keystone端的操作 (二)如何在OpenStack服务上部署Keystone中间件 (三)详细配置keystonemiddleware 部署OpenStack时一般先安装Keystone服 ...
- linux centos中添加删除修改环境变量,设置java环境变量
前言 安装完软件必要添加环境变量.指令很少,然而长时间不写就会不自信:我写的对吗?于是百度开始,于是发现又是各有千秋.好吧,好记星不如烂笔头.当然,最重要的是,百度出来的都他妈的是如何添加环境变量,只 ...
- JAVA环境变量和TomCat服务器配置
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样 ...
- 在Linux虚拟机下配置jdk的环境变量
1.到Oracle公司的官网里下载好jdk,网址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...
- Linux环境变量设置
修改环境变量PATH 最近为root添加一个环境变量发现sudo su进去没有变化所以总结了一下所有设置环境变量的方法: 查看PATH:echo $PATH 直接在命令行修改,就可以使用,但是只有在当 ...
- 再次思考 classpath 环境变量 等
f:\aspectj1.8\lib\aspectjrt.jar;.;%JAVA_HOME%\lib;C:\Temp\IBM\SQLLIB\java\db2java.zip;C:\Temp\IBM\SQ ...
- Java环境变量-Linux环境
环境变量说明 JAVA_HOME 它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk. PATH 作用是指定命令搜 ...
随机推荐
- Android 网络请求get/post工具类:NetUtil
package com.net.util; import java.io.IOException; import java.io.UnsupportedEncodingException; imp ...
- Flume中的HDFS Sink配置参数说明【转】
转:http://lxw1234.com/archives/2015/10/527.htm 关键字:flume.hdfs.sink.配置参数 Flume中的HDFS Sink应该是非常常用的,其中的配 ...
- vim复制内容到系统剪贴板
vim提供了y键盘操作用于复制文本,但是复制之后的文本位于当前窗口的缓冲区中,不在系统剪贴板中,这给跨程序文本拷贝代码很来很多麻烦.搜索发现,可以使用]y指令快速将选定的文本复制到系统剪贴板中. 顺便 ...
- Django 查询时间段 时间搜索 过滤
Django 查询时间段 1.大于某个时间 gt now = datetime.datetime.now()start = now – datetime.timedelta(hours=23, min ...
- squid搭建http/https代理服务器
前言:笔者使用的长城宽带,访问国外网站,比如mysql,nginx等站点的速度.......,你懂得,于是想到使用腾讯云主机搭建squid代理服务器,这里搭建的是一般代理服务器,squid代理服务器分 ...
- idea 改变version control
idea 当一个moudule拥有2个VCS的时候 如何切换其应用的VSC 如拥有 SVN 和 GIT 2个版本 ,想换回SVN则删除 git目录 将 version control vcs 设 ...
- JIRA REST java client API实际应用
[本文出自天外归云的博客园] 前提 1.需要安装maven环境: 2.在本地创建maven项目并修改maven配置文件“pom.xml”,添加如下内容: <dependency> < ...
- nginx中配置proxy_pass
在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走. 下面四种 ...
- go语言可变参数的坑
0x00 前提 对可变参数不了解的同学,可以先看这篇文章可变参数终极指南 0x01 第一个坑 不能通过空接口类型向可变参数传递一个普通的切片 ,需要将普通切片转换为空接口切片 0x02 第二个坑 可变 ...
- 为什么说Thunderbird是最好的桌面RSS阅读器
也许现在再讨论RSS阅读器似乎已经过时了,毕竟随着社交网络服务的发展,通过一个带有大众评分能力的社交网络(比如reddit),相比RSS的固定订阅而言,也许你能更快地在你所关心的话题上更快地获得新的资 ...