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:
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)の場合は、ログインに失敗する。