認証 (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,名前を指定する。

scopeパラメーターにprojectを指定した場合、プロジェクトIDは必須ではなくプロジェクト名でもtoken取得は可能であるが、プロジェクト名を利用する場合は追加のパラメーターが必要。なお、scopeにprojectを指定した場合、projectに指定するパラメーターによって、必須パラメーターが異なる。
  • projectに指定するパラメーターにプロジェクトIDを指定する場合

    以下のようにプロジェクトのIDのみを指定

    {"scope":{"project":{"id":"プロジェクトID"}}}

  • projectに指定するパラメーターにプロジェクト名を指定する場合

    プロジェクト名のみでのトークン取得はできないため、プロジェクト名に加え、domainパラメーターが必要

    domainパラメーターにはidまたはnameを指定
    • プロジェクト名+ドメインIDの例:
      {"scope":{"project":{"name":"プロジェクト名","domain":{"id":"ドメインID"}}}}
                  
    • プロジェクト名+ドメイン名の例:
      {"scope":{"project":{"name":"プロジェクト名","domain":{"name":"ドメイン名"}}}}
                    

トークン認証を行う場合は、トラストを指定する。

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"`