首页 技术 正文
技术 2022年11月15日
0 收藏 840 点赞 3,541 浏览 2041 个字

  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中间件的认证数据。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,085
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,560
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,409
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,182
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,819
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,902