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环境变量总结的更多相关文章

  1. (原创)OpenStack服务如何使用Keystone(三)---详细配置Keystone中间件

    (一)Keystone端的操作 (二)如何在OpenStack服务上部署Keystone中间件 (三)详细配置keystonemiddleware 前文我们介绍了如何部署Keystone中间件以及中间 ...

  2. 转: 谈JAVA_OPTS环境变量不起作用

    谈JAVA_OPTS环境变量不起作用 2016-6-14 11:12 最近在处理运行一个java应用时,老是出现java.lang.OutOfMemoryError: Java heap space. ...

  3. (原创)OpenStack服务如何使用Keystone (二)---部署和配置Keystone中间件

    (一)Keystone端的操作 (二)如何在OpenStack服务上部署Keystone中间件 (三)详细配置keystonemiddleware 部署OpenStack时一般先安装Keystone服 ...

  4. linux centos中添加删除修改环境变量,设置java环境变量

    前言 安装完软件必要添加环境变量.指令很少,然而长时间不写就会不自信:我写的对吗?于是百度开始,于是发现又是各有千秋.好吧,好记星不如烂笔头.当然,最重要的是,百度出来的都他妈的是如何添加环境变量,只 ...

  5. JAVA环境变量和TomCat服务器配置

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样 ...

  6. 在Linux虚拟机下配置jdk的环境变量

    1.到Oracle公司的官网里下载好jdk,网址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...

  7. Linux环境变量设置

    修改环境变量PATH 最近为root添加一个环境变量发现sudo su进去没有变化所以总结了一下所有设置环境变量的方法: 查看PATH:echo $PATH 直接在命令行修改,就可以使用,但是只有在当 ...

  8. 再次思考 classpath 环境变量 等

    f:\aspectj1.8\lib\aspectjrt.jar;.;%JAVA_HOME%\lib;C:\Temp\IBM\SQLLIB\java\db2java.zip;C:\Temp\IBM\SQ ...

  9. Java环境变量-Linux环境

    环境变量说明 JAVA_HOME 它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk. PATH 作用是指定命令搜 ...

随机推荐

  1. (转) Lua: 给 Redis 用户的入门指导

    可能你已经听说过Redis 中嵌入了脚本语言,但是你还没有亲自去尝试吧?  这个入门教程会让你学会在你的Redis 服务器上使用强大的lua语言. Hello, Lua! 我们的第一个Redis Lu ...

  2. python 创建txt并且写入做追加

    import os def create_str_to_txt(self,date,str_data): """ 创建txt,并且写入 """ ...

  3. scikit-learn学习之贝叶斯分类算法

    版权声明:<—— 用心写好你的每一篇文章,转载请注明出处@http://blog.csdn.net/gamer_gyt <——   目录(?)[+]   ================= ...

  4. 结合order by 解CTF某题

    真tmd不容易 <?php error_reporting(0); if (!isset($_POST['uname']) || !isset($_POST['pwd'])) { echo '& ...

  5. sphinx增量索引和主索引来实现索引的实时更新

    项目中文章的信息内容因为持续有新增,而文章总量的基数又比较大,所以做搜索的时候,用了主索引+增量索引这种方式来实现索引的实时更新. 实现原理: 1. 新建一张表,记录一下上一次已经创建好索引的最后一条 ...

  6. How Not to Crash #2: Mutation Exceptions 可变异常(不要枚举可变的集合)

    How Not to Crash #2: Mutation Exceptions 可变异常html, body {overflow-x: initial !important;}html { font ...

  7. Centos6.5生成环境配置--nginx1.9 + PHP+可多个tomcat(多个端口)+多域名+java web 负载均衡

    安装n p 参考: CentOS6.5搭建LNMP http://www.cnblogs.com/xiaoit/p/3991037.html http://blog.csdn.net/keyunq/a ...

  8. Oracle 11gR2 ORA-12638 身份证明检索失败解决方法

    1. 找到Oracle安装目录或者菜单栏,打开Oracle Net manager 2. 选择本地 ->概要文件 ->下拉选择Oracle高级安全性 -> 取消NTS 3. 菜单栏  ...

  9. Quartz Trigger Priority 触发器优先级

    Quartz Trigger Priority 触发器优先级 当多个触发器在一个相同的时间内触发,并且调度引擎中的资源有限的情况下,那么具有较高优先级的触发器先触发. 需要将配置文件中的org.qua ...

  10. springcloud配置中心客户端配置遇到的坑

    1. 出错信息如下: 在启动配置中心的客户端时,报以下错误信息: Caused by: java.lang.IllegalArgumentException: Could not resolve pl ...