OpenStack keystonemiddleware接收前一个WSGI过滤器传来的WSGI环境信息,进行验证工做后传递给下一个中间件,本文探讨keystone中间件究竟有哪些WSGI环境变量。服务器
说明:下文中以 HTTP\_ 开头的header对应标准http header, 以 HTTP_X 开头的header对应扩展的http header,WSGI环境信息用于在不一样的WSGI组件间传递统一格式的内容,这些环境信息来自于HTTP请求或其余的WSGI组件,所以格式与HTTP中header字段的格式不一样。session
keystone中间件WSGI环境变量与HTTP header字段总结:编码
HTTP_X_AUTH_TOKEN
HTTP请求中传入的用户令牌,对应于HTTP请求header中的'X-Auth-Token'字段;spa
2.插件
HTTP_X_SERVICE_TOKEN
HTTP请求中传入的服务令牌;code
WWW-Authenticate
返回给用户的HTTP header,告诉他们获取新令牌的keystone终端URL中间件
当使用复合认证(即同时提供用户令牌和服务令牌)时,关于服务的额外header会被添加。他们与标准http header的格式相同,只不过多加了一个_SERVICE_。若是没有提供服务令牌,那么这些headers就不存在。blog
1. token
HTTP_X_IDENTITY_STATUS
只能取'Confirmed' 或 'Invalid',同时若是中间被配置成'delay_auth_decision'模式运行的话,那么下游的服务将只会接收到'Invalid';ci
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中间件的认证数据。