Authentication API を使用すると、FIWARE IoT Stack APIs を使用するためにログインしてトークンを取得できます。

Device APIは、観測値を送信するためにAuthentication APIからのトークンを必要としないことに注意してください。

ログイン

トークンを取得するために、資格情報 (ユーザ名とパスワード) を使用してログインすることができます。どのサービス(またはサービスとサブサービス)を使用すべきかを指示するために、スコープが示されていることを確認してください。

POST /v3/auth/tokens HTTP/1.1
Host: test.ttcloud.net:5001
Content-Type: application/json

{
    "auth": {
        "identity": {
            "methods": [
                "password"
            ],
            "password": {
                "user": {
                    "domain": {
                        "name": "{{Fiware-Service}}"
                    },
                    "name": "{{user-name}}",
                    "password": "{{user-pass}}"
                }
            }
        },
        "scope": {
            "domain": {
                "name": "{{Fiware-Service}}"
            }
        }
    }
}

ユーザがサブサービスでロールしか持たない場合は、サブ・サービススコープのトークンを要求する必要があります :

POST /v3/auth/tokens HTTP/1.1
Host: test.ttcloud.net:5001
Content-Type: application/json

{
    "auth": {
        "identity": {
            "methods": [
                "password"
            ],
            "password": {
                "user": {
                    "domain": {
                        "name": "{{Fiware-Service}}"
                    },
                    "name": "{{user-name}}",
                    "password": "{{user-pass}}"
                }
            }
        },
        "scope": {
            "project": {
                "domain": {
                   "name": "{{Fiware-Service}}"
                },
                "name": "/{{Fiware-ServicePath}}"
            }
        }
    }
}

いずれの場合も、X-Subject-Token と呼ばれるヘッダを持つ HTTP 201 Created レスポンスを受け取ります。これが {{user-token}} です :

HTTP 201 Created
Content-Type : application/json
Vary : X-Auth-Token
X-Subject-Token : {{user-token}}

{
  "token": {
    "domain": {
      "id": "63e0201c733343bb85e275f32b891be2",
      "name": "{{Fiware-Service}}"
    },
    "methods": [
      "password"
    ],
    "roles": [
      {
        "id": "eb4f224ca3ee4e829790765c30adfbf3",
        "name": "admin"
      }
    ],
    "expires_at": "2018-08-26T08:14:59.632237Z",
    "catalog": [],
    "extras": {},
    "user": {
      "domain": {
        "id": "63e0201c733343bb85e275f32b891be2",
        "name": "{{Fiware-Service}}"
      },
      "id": "f44ae6ecb4ea4310810273b042946505",
      "name": "{{user-name}}"
    },
    "issued_at": "2015-08-27T08:14:59.632260Z"
  }
}

次の手順で {{user-token}} を正しく貼り付けるように注意してください。これはAPI トークンであり、一定の期間有効です(ほとんどの場合、1時間)。

指定された別のトークンから新しいトークンを取得

トークンを取得すると、同じ効果を持つ別のトークンを取得できます :

POST /v3/auth/tokens HTTP/1.1
Host: test.ttcloud.net:5001
Content-Type: application/json
X-Auth-Token: {{user-token}}

{
    "auth": {
        "identity": {
            "methods": [
                "token"
            ],
            "token": {
                "id": "{{user-token}}"
            }
        }
    }
}

トークンのステータスを取得

トークンを取得したら、いつでもその有効性をチェックし、次のような情報を得ることができます :

GET /v3/auth/tokens HTTP/1.1
Host: test.ttcloud.net:5001
Content-Type: application/json
X-Auth-Token: {{user-token}}
X-Subject-Token: {{token-to-analize}}

トークンが発行された日時とレスポンス・ボディで期限切れになる時期を確認できます :

{
  "token": {
    "issued_at": "2015-08-27T08:22:39.688387Z",
    "extras": {},
    "methods": [
      "token",
      "password"
    ],
    "expires_at": "2018-08-25T08:30:37.131450Z",
    "user": {
      "domain": {
        "id": "63e0201c733343bb85e275f32b891be2",
        "name": "{{Fiware-Service}}"
      },
      "id": "f44ae6ecb4ea4310810273b042946505",
      "name": "{{user-token}}"
    }
  }
}

トークンの有効期限を延長することはできませんが、いつでも新しいトークンを要求することができます。以前に取得したトークンは有効です。

トークンの有効性をチェック

トークンを取得すると、次のようにいつでも有効性を確認できます :

HEAD /v3/auth/tokens HTTP/1.1
Host: test.ttcloud.net:5001
Content-Type: application/json
X-Auth-Token: {{user-token}}
X-Subject-Token: {{token-to-analize}}
x-subject-token で提供されたトークンが有効な場合、200応答が返されます。

追加の詳細情報

セキュリティ・コンポーネント(IDM, PEP, AC) で、この機能および、リファレンス API ドキュメント、ソースコードを提供する FIWAREコンポーネント に関する詳細情報を入手できます。