intra-mart Accel Platform OAuth認証モジュール 仕様書 初版 2014-12-01

intra-mart Accel Platform で提供している認証フロー

intra-mart Accel Platform では以下の認証フローを提供しています。
それぞれの認証フローは、以下の場合に使用します。
  • 認可コードによる認可

    WebアプリケーションからOAuth認証を利用する場合に使用します。
  • インプリシットグラント

    ネイティブなモバイルやデスクトッププリケーションのようなクライアントアプリケーションからOAuth認証を利用する場合に使用します。
  • アクセストークンの更新

    発行されたアクセストークンの有効期限が切れ、新しいアクセストークンを取得する場合に使用します。

認可コードによる認可

認可コードによる認可は、クライアントアプリケーションがユーザに直接認可を要求する代わりに、ユーザを認可サーバ( intra-mart Accel Platform )へリダイレクトさせ、ユーザがリダイレクトして戻ってきた際に認可コードを取得します。

認可コードは認可サーバで作成され、クライアントアプリケーションにブラウザ経由で渡される、ユーザのアクセス許可を表す短期間のトークンです。
クライアントアプリケーションは認可コードとクライアントの認証情報を認可サーバに送りアクセストークンを取得します。

認可コードによる認可フロー

  1. ユーザがブラウザより、クライアントアプリケーションを実行します。

  2. クライアントアプリケーションはユーザのブラウザに認可エンドポイントへリダイレクトするレスポンスを返します。

  3. 認可サーバはユーザ認証を行い、クライアントアプリケーションのアクセス許可をたずねます。

    ../../_images/authorization.png
  4. ユーザがアクセスを許可した場合、指定されたリダイレクトURIを用いて認可コードをクライアントアプリケーションに受け渡します。

  5. クライアントアプリケーションは受け渡された認可コードを用いて、トークンリクエストを送信します。

  6. 認可サーバは、認可コードおよびクライアントアプリケーションの認証情報(クライアントシークレット)を検証し、クライアントアプリケーションへアクセストークンおよびリフレッシュトークンを返却します。

  7. クライアントアプリケーションは取得したアクセストークンを用いて intra-mart Accel Platform 上のリソースへアクセスします。

  8. intra-mart Accel Platform はアクセストークンを検証してリソースを返却します。

  9. クライアントアプリケーションは取得したリソースを用いて処理を行い、結果をユーザへ返却します。

    ../../_images/authorization_code_flow.png

インプリシットグラント

インプリシットグラントフローは、モバイルやデスクトップ上で動作するクライアントアプリケーションでOAuth認証を利用する場合に使用します。
ユーザのコンピュータ、または、デバイスで実行されるアプリケーションではアプリケーション毎の共通の機密情報を安全に保護することができない可能性があります。
そのため、インプリシットグラントフローではクライアントを認証せずにアクセストークンを発行します。(ただし、クライアントにアクセストークンを渡す際に使用されるリダイレクトURIをもとに、クライアントの身元が検証可能なこともあります。)

インプリシットグラントフロー

  1. ユーザがクライアントアプリケーションを実行します。

  2. クライアントアプリケーションはユーザのブラウザを起動して認可エンドポイントへリクエストを送信します。

  3. 認可サーバはユーザ認証を行い、クライアントアプリケーションのアクセス許可をたずねます。

    ../../_images/authorization.png
  4. ユーザがアクセスを許可した場合、指定されたリダイレクトURIを用いてアクセストークンをクライアントアプリケーションに受け渡します。

  5. クライアントアプリケーションは取得したアクセストークンを用いて intra-mart Accel Platform 上のリソースへアクセスします。

  6. intra-mart Accel Platform はアクセストークンを検証してリソースを返却します。

  7. クライアントアプリケーションは取得したリソースを用いて処理を行い、結果をユーザへ返却します。

    ../../_images/implicit_flow.png

コラム

  • インプリシットグラントフローでは、リフレッシュトークンは発行されません。
    アクセストークンの有効期限が過ぎた場合、再度上記の手順でアクセストークンを取得する必要があります。

アクセストークンの更新

認可サーバがクライアントアプリケーションにリフレッシュトークンを発行している場合、クライアントアプリケーションはアクセストークンの有効期限が過ぎた際に、リフレッシュトークンを用いてトークンの更新リクエストを送ることができます。

アクセストークンの更新フロー

  1. クライアントアプリケーションは認可サーバにアクセストークンの更新リクエストを送信します。

  2. 認可サーバは、リフレッシュトークンおよびクライアントアプリケーションの認証情報(クライアントシークレット)を検証して新しいアクセストークンおよびリフレッシュトークンを返却します。古いアクセストークンおよびリフレッシュトークンは破棄されます。

  3. クライアントアプリケーションは取得した新しいアクセストークンを用いて intra-mart Accel Platform 上のリソースへアクセスします。

  4. intra-mart Accel Platform はアクセストークンを検証してリソースを返却します。

    ../../_images/refresh_token_flow.png