Swift的认证

Swift通过Proxy Server接收用户RESTful API请求时,首先需要通过认证服务对用户的身份进行认证,认证通过后,Proxy Server才会真正地处理用户请求并响应。
Keystone的原理比较简单,整个系统提供全局唯一的Keystone服务,客户端在发送HTTP请求之前,首先需要向Keystone申请一个Token(定长的字符串),该Token的有效期由Keystone服务端来指定。申请Token时,需要向Keystone提供用户名和密码,这里可以理解成AWS中的AK和SK,Keystone认证通过该用户之后,发放Token给客户端。之后客户端每次发送HTTP请求时都必须携带该Token,Swift拿到该Token和用户名信息后,也会向Keystone查询该Token是否有效。Token有效,则继续处理该业务,Token无效,则返回鉴权失败。
具体的流程可以从如下序列图看出:
具体使用何种认证方法在Proxy Server的Paste Deploy配置文件/etc/swift/proxy-server.conf文件中进行配置。
[pipeline:main]
pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk tempurl ratelimit tempauth container-quotas account-quotas slo dlo proxy-logging proxy-server
Swift默认采用tempauth认证方式。
因为是采用WSGI中间件的形式,我们可以很容易实现一个自己的认证服务替换Keystone或tempauth。
使用tempauth,需要在proxy-server.conf的tempauth部分定义用户的信息
[filter:tempauth]
use = egg:swift#tempauth
#格式定义如下
#user_<account>_<user> = <key> [group] [group] [...] [storage_url]
key:密码。
group:有两种,一种是.reseller_admin ,具有对任何account操作的权限;另外一种是.admin,只能对所在account进行操作。如果这两种都没有设置,则该用户只能访问那些.reseller_admin 与.admin所允许的Container。
storage_url:用于在认证之后向用户返回Swift的URL。
如下是proxy-server.conf.sample中提供的例子。
user_admin_admin = admin .admin .reseller_admin
user_test_tester = testing .admin
user_test2_tester2 = testing2 .admin
user_test_tester3 = testing3
如果希望使用keystone认证,那么需要在pipeline中用authtoken keystoneauth替换tempauth。
同时对[filter:authtoken]、[filter:keystoneauth]进行相关配置。
以上都是基于juno版本的理论。
下面是生产环境的一个配置样例,Openstack版本是O版本:
[pipeline:main]
pipeline = healthcheck cache authtoken keystone proxy-server
[filter:keystone]
use = egg:swift#keystoneauth
operator_roles = admin, SwiftOperator, _member_
cache = swift.cache
reseller_prefix=AUTH_
[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
signing_dir = /var/cache/swift
log_name=swift
auth_uri=http://192.168.0.120:5000/v3
auth_url=http://192.168.0.120:35357
auth_plugin=password
project_domain_id=default
user_domain_id=default
project_name=services
username=swift
password=6f3d6e6060624ed3
delay_auth_decision=1
cache=swift.cache
include_service_catalog=False
参考:
http://www.it610.com/article/2674800.htm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值