認証 (POST /v3/auth/tokens)
認証とトークンを生成する。
生成したトークンは、改行コード等の制御文字を削除して各APIのリクエストヘッダーX-Auth-Tokenに指定すること。(削除例は下部参照)
一定時間(15分間)内に、連続で閾値(5回)を超えるパスワードエラーを検出した場合、一定時間(15分間)は認証エラーとなり、認証を行うことができない。
Request Headers
Content-type
MIME仕様で定義されているコンテントの形式を示す。
application/jsonを指定する。(必須項目)
Data Type | Cardinality |
---|---|
xsd:string | 1..1 |
Accept
MIME仕様で定義されているアクセプトの形式を示す。
application/jsonを指定する。(省略可)
Data Type | Cardinality |
---|---|
xsd:string | 1..1 |
Request Parameter
auth
authオブジェクト(必須項目)
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 1..1 | なし | identity
scope |
identity
identityオブジェクト(必須項目)
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 1..1 | auth | methods
password token saml2 |
methods
- パスワード認証、トークン認証のいずれかを指定する
- パスワード認証:password
- トークン認証:token
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | identity | None |
password
passwordオブジェクト(パスワード認証時は必須項目)
パスワード認証時に使用する。
- ユーザーIDとパスワード
- ドメインIDとユーザー名とパスワード
- ドメイン名とユーザー名とパスワード
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | identity | user |
user
userオブジェクト(パスワード認証時は必須項目)
一意にユーザー、パスワードを識別するためのIDまたは名前を指定する。
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | password | domain
id name password |
domain
domainオブジェクト
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | user | id
name |
id
ドメインID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | domain | None |
name
ドメイン名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | domain | None |
id
ユーザーID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | user | None |
name
ユーザー名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | user | None |
password
パスワード(パスワード認証時は必須項目)
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | user | None |
token
tokenオブジェクト(トークン認証時は必須項目)
トークン認証時に使用する。
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | identity | id |
id
認証したトークン(トークン認証時は必須項目)
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | token | None |
scope
scopeオブジェクト
一意のドメインまたはプロジェクトを識別するためのID,名前を指定する。
- projectに指定するパラメーターにプロジェクトIDを指定する場合
以下のようにプロジェクトのIDのみを指定
{"scope":{"project":{"id":"プロジェクトID"}}}
- projectに指定するパラメーターにプロジェクト名を指定する場合
プロジェクト名のみでのトークン取得はできないため、プロジェクト名に加え、domainパラメーターが必要
domainパラメーターにはidまたはnameを指定- プロジェクト名+ドメインIDの例:
{"scope":{"project":{"name":"プロジェクト名","domain":{"id":"ドメインID"}}}}
- プロジェクト名+ドメイン名の例:
{"scope":{"project":{"name":"プロジェクト名","domain":{"name":"ドメイン名"}}}}
- プロジェクト名+ドメインIDの例:
トークン認証を行う場合は、トラストを指定する。
scopeオブジェクトを省略した場合、プロジェクト指定と同じ結果となる。
また、scopeを指定する位置を間違えた場合、scopeオブジェクトを省略されたと判断される場合がある。
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | auth | project
domain OS-TRUST:trust |
project
projectオブジェクト
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | scope | domain
id name |
domain
domainオブジェクト
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | project | id
name |
id
ドメインID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | domain | None |
name
ドメイン名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | domain | None |
id
プロジェクトID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | project | None |
name
プロジェクト名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | project | None |
domain
domainオブジェクト
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | scope | id
name |
id
ドメインID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | domain | None |
name
ドメイン名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | domain | None |
OS-TRUST:trust
OS-TRUST:trustオブジェクト
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | scope | id |
id
トラストID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | OS-TRUST:trust | None |
Response Headers
HTTPステータスコード
リクエストのHTTPステータスコードを返却する。
以下の値を返却する。
- 201:
- 正常終了
- 400:
- 不正なアクセス(パラメーター不正等)
- 401:
- 認証エラー
- 403:
- アクセス不可(権限がない)
- 404:
- 該当資源なし
- 409:
- データ競合が発生
- 500:
- 予期せぬエラー
- 501:
- 実装されていない
- 503:
- サービス利用不可
Data Type | Cardinality |
---|---|
int | 1..1 |
Vary
以下のヘッダーを設定または変更することで、別のファイル形式で表現を要求できることを通知する。
X-Auth-Token
Data Type | Cardinality |
---|---|
xsd:string | 1..1 |
Content-Type
MIME仕様で定義されているコンテントの形式を示す。
application/json
Data Type | Cardinality |
---|---|
xsd:string | 1..1 |
Content-Length
エンティティの長さをバイトで示す。
Data Type | Cardinality |
---|---|
int | 1..1 |
Date
作成された日付を示す。
Data Type | Cardinality |
---|---|
date | 1..1 |
X-Subject-Token
トークン(Unscopedトークン or Scopedトークン)
Data Type | Cardinality |
---|---|
xsd:string | 1..1 |
Response Elements
token
tokenオブジェクト
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 1..1 | なし | expires_at
issued_at methods roles domain project catalog extras user |
expires_at
トークン有効期限
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | token | None |
issued_at
トークンの発行期限
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | token | None |
methods
認証方法
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | token | None |
roles
rolesオブジェクト
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | token | (role) |
(role)
roleオブジェクト(無名オブジェクト)
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 1..n | roles | id
name |
id
ロールID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | (role) | None |
name
ロール名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | (role) | None |
domain
domainオブジェクト
scopeにドメインを指定した場合に設定される。
scopeに指定したドメインの情報
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | token | id
name |
id
ドメインID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | domain | None |
name
ドメイン名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | domain | None |
project
projectオブジェクト
scopeにプロジェクトを指定した場合に設定される。
scopeに指定したプロジェクトの情報
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | token | domain
id name |
domain
domainオブジェクト
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | project | id
name |
id
ドメインID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | domain | None |
name
ドメイン名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | domain | None |
id
プロジェクトID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | project | None |
name
プロジェクト名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | project | None |
catalog
catalogオブジェクト
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | token | endpoints
type id |
endpoints
endpointsオブジェクト
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 0..1 | catalog | (endpoint) |
endpoint
endpontオブジェクト(無名オブジェクト)
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 1..n | endpoints | name
url region interface id |
name
エンドポイント名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | (endpoint) | None |
url
url情報
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | (endpoint) | None |
region
リージョン名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | (endpoint) | None |
interface
インターフェース情報
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | (endpoint) | None |
id
エンドポイントID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | (endpoint) | None |
type
サービスタイプ
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | catalog | None |
id
サービスID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 0..1 | catalog | None |
extras
拡張情報
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | token | None |
users
usersオブジェクト
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 1..1 | token | domain
id name |
domain
domainオブジェクト
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
Element | 1..1 | user | id
name |
id
ドメインID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | domain | None |
name
ドメイン名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | domain | None |
id
ユーザーID
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | user | None |
name
ユーザー名
Data Type | Cardinality | Parent Element | Child Element(s) |
---|---|---|---|
xsd:string | 1..1 | user | None |
Example of Request
POST /v3/auth/tokens
例1)パスワード認証
ドメインIDとユーザー名を指定、scopeパラメーターは省略(プロジェクトを指定した場合と同じ動作)
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"domain": {
"id": "--domain-id--"
},
"name": "username",
"password": "userpassword9999"
}
}
}
}
}
例2)トークン認証
{
"auth": {
"identity": {
"methods": [
"token"
],
"token": {
"id": "(認証したトークンを設定)"
}
},
"scope": {
"OS-TRUST:trust": {
"id": "--trust_id--"
}
}
}
}
Example of Response
例)パスワード認証で、スコープにプロジェクト情報を指定した場合のレスポンス例
{
"token": {
"methods": [
"password"
],
"roles": [
{
"id": "—role-id--",
"name": "admin"
}
],
"expires_at": "2013-02-27T18:30:59.999999Z",
"project": {
"domain": {
"id": "--domain-id--",
"name": "admin"
},
"id": "--project-id--",
"name": "admin"
},
"catalog": [
{
"endpoints": [
{
"name": "identityv3",
"url": "https://identity.jp-east-1.cloud.global.fujitsu.com/v3",
"region": "jp-east-1",
"interface": "public",
"id": "--endpoint-id--"
}
],
"type": "identityv3",
"id": "--service-id--"
},
(省略)
{
"endpoints": [
{
"name": "image",
"url": "https://image.jp-east-1.cloud.global.fujitsu.com",
"region": "jp-east-1",
"interface": "public",
"id": "--endpoint-id--"
}
"type": "image",
"id": "--service-id--"
}
],
"extras": {},
"user": {
"domain": {
"id": "--domain-id--",
"name": "admin"
},
"id": "--user-id--",
"name": "username"
},
"issued_at": "2013-02-27T16:30:59.999999Z"
}
}
Example of Curl Command(トークンの末尾の改行コードを削除)
export TOKEN=`curl -si -H "Content-Type:application/json" -d @data.json
http://xxxxx/v3/auth/tokens | awk '/X-Subject-Token/ {print $2}' | tr -d "\r"`