5.11. SAML認証開始¶
-
GET
/1/
(tenantId)/auth/saml/init
¶ SAML認証を開始する。
本APIは、SAML認証画面への誘導と認証成功後のログインに使用するワンタイムトークンの通知を行う。
Query Parameters: - redirect (string) -- 認証結果通知先URL(必須)
Status Codes: - 302 Found -- リダイレクト応答(正常処理)
- 400 Bad Request -- クエリパラメータ不正(指定なし含む)
- 403 Forbidden -- SAML認証未使用テナント
Response Headers: - Location -- 認証サーバの認証URI
- Set-Cookie -- SAML認証結果受付用Cookie情報
レスポンスの例
成功時(302 Found)のレスポンスヘッダの例を示す。:
Set-Cookie: redirect=http://sample.net; path=/api/1/52116f01ac521e1742000001/auth/saml/landing; expires=Mon, 31 Jan 2011 14:15:13 GMT Location: https://baas.example.com/api/1/52116f01ac521e1742000001/auth/saml/start?idp=http://adfs.example.jp/adfs/services/trust
エラー時はエラーページ(HTML)が返却される。
ワンタイムトークンはHTTPリクエストのクエリパラメータとして認証結果通知先URLに通知される。 クエリパラメータ名は「token」であり、HTTPリクエストは以下のフォーマットとなる。:
{認証結果通知先URI}?token={ワンタイムトークン}
リダイレクトされるHTTPリクエスト行の例を以下に示す。
GET http://sample.net?token=t568PrrpvB1W7DhqBhlVfTMAc2NhsIw9j60OTZLz HTTP/1.1
SAML認証に成功し、認証されたユーザと同名のユーザが存在しない場合、DBにユーザを登録する。DBに登録するユーザ情報は、下記の通り。
ユーザ情報 説明 _id ユーザID(DB保存時に自動付加される) tenantId テナントID username SAMLトークンのCommonName属性の値 createdAt DB上のユーザ作成日時 updatedAt DB上のユーザ更新日時 etag ログイン時に自動付加されるETAG値 federated 外部認証連携有無(常にtrue) "username"について、SAMLトークン内にCommonNameがない場合は、NameIDを用いる。
SAML認証に成功した場合、認証されたユーザに関連する公開グループ情報について、MongoDBへの反映を行う。 グループ情報は、グループ階層を意識しないフラット構造として扱う。登録、更新対象となるグループ情報は、以下の通り。
グループ情報 説明 id ユーザID(DB保存時に自動付加される) tenantId テナントID name SAMLトークンのGroup属性の値 users グループに所属するユーザ一覧 groups グループに所属する子グループ一覧 createdAt DB上のグループ作成日時 updatedAt DB上のグループ更新日時 etag 情報変更時に自動付加されるETag値 acl グループACL "acl" には、読み出し権限に "g:authenticated" のみが設定される。
注意事項
- SAML認証を使用しているテナントに対してのみ実行可能。
- "redirect" には、デベロッパーコンソールで登録したURLを設定すること。登録されていない場合は400エラーを返却する。