MobileFirst Server を使用した外部リソースの認証

improve this page | report issue

概説

保護リソースは、MobileFirst Server 上で実行することも (例えば、アダプターなど)、外部サーバー上で実行することもできます。Mobile Foundation に付属の検証モジュールを使用して、外部サーバー上のリソースを保護できます。

このチュートリアルでは、MobileFirst アクセス・トークンを検証するフィルターを実装することにより、外部リソース・サーバーを保護する方法を学習します。
そのような保護を実装する際は、すべてをカスタム・コードにすることも、フローの一部をカプセル化した Mobile Foundation ヘルパー・ライブラリーのいずれかを使用することもできます。

前提条件:

フロー

外部リソースの保護のダイアグラム

MobileFirst Server には、イントロスペクション・エンドポイントというコンポーネントがあります。このコンポーネントで、MobileFirst アクセス・トークンに含まれるデータを検証したり、それらのデータを抽出したりできます。このイントロスペクション・エンドポイントは REST API 経由で使用できます。

  1. アプリケーションが Mobile Foundation クライアント SDK を使用して、保護リソースに対するリソース要求呼び出し (または HTTP 要求) を行います。要求には、Authorization ヘッダー (クライアント・アクセス・トークン) が付いている場合もあれば、ない場合もあります。
  2. イントロスペクション・エンドポイントと通信するために、リソース・サーバー上のフィルターは、それ自身のために別のトークンを取得する必要があります (機密クライアントのセクションを参照してください)。
  3. リソース・サーバー上のフィルターは、ステップ 1 のクライアント・アクセス・トークンを抽出し、それを検証のためにイントロスペクション・エンドポイントに送信します。
  4. MobileFirst 許可サーバーがトークンを無効 (またはトークンが存在しない) と判断した場合、クライアントは、必要なスコープ用の新しいトークンを取得するためにリソース・サーバーによってリダイレクトされます。MobileFirst クライアント SDK が使用される場合、この部分は内部で行われます。

機密クライアント

イントロスペクション・エンドポイントはスコープ authorization.introspect によって保護されている内部リソースであるため、リソース・サーバーは、そこにデータを送信するために別のトークンを取得する必要があります。許可ヘッダーを付けずにイントロスペクション・エンドポイントへの要求を試行すると、401 応答が返されます。

外部リソース・サーバーが authorization.introspect スコープ用のトークンを要求できるようにするには、MobileFirst Operations Console からそのサーバーを機密クライアントとして登録する必要があります。

機密クライアントのチュートリアルで詳細を参照してください。

MobileFirst Operations Console で、「設定」→「機密クライアント」の下に新規エントリーを追加します。「クライアント秘密鍵」「API 秘密鍵」値を選択します。「許可されるスコープ」に、必ず authorization.introspect を設定してください。

機密クライアントの構成

実装

このフローは、さまざまな REST API に直接 HTTP 要求を行うことにより、手動で実装できます (資料を参照してください)。
Mobile Foundation は、提供されるトラスト・アソシエーション・インターセプターを使用するか、または提供される Java トークン・バリデーターを使用するその他の任意の Java ベース・フィルターを使用して、WebSphere サーバー上でこれを実現するのを支援するためのライブラリーも提供しています。

Last modified on March 10, 2017