Keystone-BP-S3Token/ja
- Launchpad Entry: KeystoneSpec:s3token
- Created: 2012-01-15
- Contributor: Akira YOSHIYAMA
概要
Swift の S3 API で Keystone のユーザ認証・認可機能を提供する機能を追加します。 本機能は Nova の EC2 API 用 Keystone のユーザ認証・認可機能を S3 API 用に移植したものです。
依存性
なし。
構成
本機能は3つのパートから構成されています。
- Keystone に S3 API 用の認証 API(/s3tokens)を追加する Keystone 用パッチ
- 1. を Swift から使用する為のミドルウェア(keystone/keystone/middleware/s3_token.py)
- 2. で得られたエンドポイント情報等を Swift で使うための Swift 用パッチ
EC2 API 用コードと同様、1. と 2. は Keystone、3. は Swift のソースコードに適用されます。
設定
Swift の Proxy サーバ用設定(/etc/swift/proxy-server.conf)の pipeline 設定に以下の通り s3token を追加します。
[pipeline:main] pipeline = healthcheck cache s3token swift3 keystone proxy-server
また、同じ設定ファイル中に、以下の設定を追加します。
[filter:s3token] use = egg:keystone#s3token auth_protocol = http auth_host = 127.0.0.1 auth_port = 5000 admin_token = 999888777666
auth_protocol, auth_host, auth_port は keystone のパブリック URL のスキーマ、IP アドレス、ポート番号を設定します。
admin_token は keystone の設定に合わせます。
設定適用後、Swift の Proxy サーバを再起動し、設定を反映します。
シーケンス
本機能は Nova の EC2 API における認証と同様の流れで処理されます。
Swiftクライアント | Swiftミドルウェア | ||
Swiftクライアント | S3API要求→ | s3token | |
s3token | →Keystone 認証要求 | ||
s3token | ←認証トークン、エンドポイント | ||
keystone | 認証トークン→ | ||
keystone | ←認可情報 | ||
Swiftクライアント | ←S3 API応答 | swift3(S3API) |
Keystone の追加 API
リクエスト
- リクエストメソッド
POST /v2.0/s3tokens
- リクエストヘッダ
Content-Type: application/json
- リクエストボディ
JSON形式で以下の項目を含む。
||access||アクセスキー(アカウント名)|| ||signature||シグネーチャ|| ||verb||元リクエストのメソッド|| ||path||元リクエストの URL パス|| ||expire||元リクエストの Date ヘッダ|| ||content_type||元リクエストの Content-Type ヘッダ|| ||content_md5||元リクエストの Content-MD5 ヘッダ|| ||xheaders||元リクエストの X-Amz-* ヘッダ群||
レスポンス
- 200 (OK)
- 400 (Bad Request)
- 401 (Unauthorized)
- 403 (User Disabled)