5.2. ログイン¶
-
POST
/1/
(tenantId)/login
¶ ログインを行う。
ログインにはユーザ名、E-mail アドレス、ワンタイムトークンのいずれかを用いる。ログインが成功すると、セッショントークンが払い出される。
Request Headers: - X-Application-Id -- アプリケーションID(必須)
- X-Application-Key -- アプリケーションキー(必須)
- Content-Type -- application/json
Request JSON Object: - username (string) -- ユーザ名 (username / email / token の何れか必須)
- email (string) -- E-mail アドレス (username / email / token の何れか必須)
- token (string) -- ワンタイムトークン(username / email / token の何れか必須)
- password (string) -- パスワード(token が指定されていない場合は必須)
Status Codes: - 200 OK -- 正常にログインした
- 400 Bad Request -- パラメータ/リクエストボディ不正
- 401 Unauthorized -- 認証エラー
- 415 Unsupported Media Type -- Content-Type 不正
Response JSON Object: - _id (string) -- ユーザID
- sessionToken (string) -- セッショントークン
- expire (integer) -- セッショントークンの有効期限。UNIX Time (1970-01-01 00:00:00 UTCからの経過秒数)で表現する。デフォルトはログインから24時間後。
- username (string) -- ユーザ名
- email (string) -- E-mail アドレス
- groups (array) -- ユーザが所属する全グループの一覧 (authenticated, anonymous は含まず)
- options (object) -- オプション情報
- createdAt (string) -- ユーザ作成日時
- updatedAt (string) -- ユーザ更新日時
- lastLoginAt (string) -- 前回のログイン日時
- etag (string) -- 新規作成・更新の度に変更される固有値。ログイン前後で変更はない。
- federated (boolean) -- 外部認証連携有無 (本APIでは常にfalse)
- primaryLinkedUserId (string) -- OpenID Connect認証でユーザ自動生成時のリンクユーザID (本APIでは常にnull)
- clientCertUser (boolean) -- クライアント証明書認証ユーザフラグ
- enabled (boolean) -- 有効フラグ
リクエストボディの例
ユーザ名とパスワードでログインする場合
{ "username": "tarou", "password": "Passw0rd" }
ワンタイムトークンでログインする場合
{ "token": "ujgBHPgmNLDkUkjTapDiHipPzdHiEidKDiaiJHqP" }
レスポンスの例
{ "_id": "52116f01ac521e1742000001", "sessionToken": "eyJ1c2VyX2lkI.....de3c3f704c5cd", "expire": 1376878239, "username": "tarou", "email": "nichiden.tarou@example.com", "groups": [ "group1", "group2", "group3" ], "options": { "displayName": "日電 太郎", "division": "日電事業部" }, "createdAt": "2013-08-27T04:37:30.000Z", "updatedAt": "2013-08-27T04:37:30.000Z", "lastLoginAt": "2013-08-27T04:37:30.000Z", "etag": "8c92c97e-01a7-11e4-9598-53792c688d1b", "federated": false, "clientCertUser" false, "primaryLinkedUserId": "5953a6b10b1fed0f61c49ead", "enabled": true }
LDAP認証
LDAP認証を利用した場合は、LDAPサーバを使用して認証に成功後、MongoDBにユーザを登録する。 これにより、各APIが該当ユーザを使用可能となる。
MongoDBに登録するユーザ情報は、下記の通り。
ユーザ情報 説明 id MongoDB保存時に自動付加されるID tenantId テナントID username LDAPエントリのログイン属性の値。
デフォルト値は、ActiveDirectoryの場合は "sAMAccountName" 値、OpenLDAPの場合は "uid" の値
createdAt MongoDB上のユーザ作成日時 updatedAt MongoDB上のユーザ更新日時 etag ログイン時に自動付加されるETAG値 lastLoginAt 最終ログイン日時 federated 外部認証連携有無(常にtrue) LDAP認証に成功した場合、認証されたユーザに関連する公開グループ情報について、MongoDBへの反映を行う。 登録、更新対象となるグループ情報は、以下の通り。
グループ情報 説明 id MongoDB保存時に自動付加されるID tenantId テナントID name LDAPエントリのGroup属性の値 users グループに所属するユーザ一覧 groups グループに所属する子グループ一覧 createdAt MongoDB上のグループ作成日時 updatedAt MongoDB上のグループ更新日時 etag 情報変更時に自動付加されるETAG値 acl グループACL。読み出し権限に "g:authenticated"のみが設定される。 補足・注意事項
- username と email の両方が設定された場合、username のみが有効となり、emailは無効となる。
- LDAP認証を使う場合は、usernameとpasswordのみを指定すること。 (emailを指定しても無視される)
- SAML認証・OpenID Connect認証を使う場合は、tokenのみを指定すること。(他のパラメータを同時に指定しても無視される)
- tokenには SAML認証開始, OpenID Connect 認証開始 の呼び出し後に通知されるワンタイムトークンを指定すること。
- 有効期限の切れたtokenを指定した場合は認証エラーとなる。
- SAML認証・OpenID Connect認証未使用テナントの場合は、tokenを指定しても無視される。
- 以後、ユーザ認証が必要なAPIでは、セッショントークンを X-Session-Token ヘッダに指定すること。
- セッショントークンには有効期限があるので注意すること。期限切れとなった場合は再度ログインを行うこと。
- セッショントークンの有効時間はデベロッパーコンソールで指定する。
- セッショントークンの利用が終わったら、原則ログアウト API を呼び出してトークンを無効化すること。
- _USERS バケットのcontentACLに対する権限は不要。
- ユーザが無効(enabled : false)の場合は、ログインに失敗する。