チュートリアル: OAuth セキュリティーの実装

このチュートリアルでは、API Managerのユーザーインターフェースを使用して、ネイティブの OAuth プロバイダーを作成する方法について説明します。

このチュートリアルについて

ネイティブの OAuth プロバイダーを作成することで、サードパーティ製アプリケーションに依存することなく、 OAuthAPI Connect の認証処理を内部で実行できるようになります。 ネイティブ OAuth プロバイダーを作成するときに、API に OAuth プロバイダーを適用すると、その API が更新されて、OAuth 構成が組み込まれます。 その後、API を公開します。 公開されたAPIが呼び出されるたびに、 API Connect 、呼び出し元のアプリケーションがAPIリソースへのアクセスを許可されていることを確認し、APIを利用可能にする。

OAuth セキュリティーを実装するには、プロバイダーを作成し、そのプロバイダーを使用するように API を更新する必要があります。 このチュートリアルでは、以下のレッスンを行います。

  1. ネイティブ OAuth プロバイダーの作成
  2. API への OAuth セキュリティーの追加
  3. デフォルトのSandboxテストアプリケーションに、 OAuth から URL へのリダイレクトを追加する
  4. OAuth セキュリティー実装のテスト

開始前に

このチュートリアルでは、事前定義された FindBranch API を使用します。 このチュートリアル用に環境を準備するには、以下のタスクを実行してください。

  1. カタログの作成と設定 」の手順に従って、この DataPower® API Gateway サービスをサンドボックス・カタログに追加します。

    少なくとも 1 つのゲートウェイを使用するように、サンドボックス・カタログを構成する必要があります。 このチュートリアルでは、FindBranch API が使用するゲートウェイと同じゲートウェイを使用する必要があります。

  2. チュ ートリアル「APIのインポート」の説明に従って、 FindBranch APIをインポートし、有効にしてください。

ネイティブ OAuth プロバイダーの作成

API Manager でネイティブの OAuth プロバイダーを作成するには、外部認証 URL を使用してユーザーを検証するユーザーレジストリを設定し、そのレジストリでログインするユーザーを認証するプロバイダーを作成します。

  1. OAuth を使用してユーザーを認証するために使用できるユーザー・レジストリーを作成します。
    1. API Managerにログインする。
    2. ホーム・ ページで「 リソースの管理 」タイルをクリックする。

      APIマネージャーホーム

    3. リソース] ページの左ペインで、[ ユーザー登録 ]を選択します。
    4. User registries セクションで、 Createをクリックする。
    5. Create user registry ページで、 Authentication URL user registry タイルを選択する。 「ユーザー・レジストリーの作成」ページで、選択されたユーザー・レジストリー・タイプとして「認証 URL ユーザー・レジストリー」をクリックします。

      ユーザー・レジストリーの作成

    6. Create authentication URL user registry ページで、以下の情報を入力する。
      1. タイトルと 表示名の欄に、 AuthURL と入力する。

        タイトルと 表示名フィールドに AuthURL を入力することで、このレジストリが認証 URL で構成されていることを簡単に判断できる。

      2. フィールドに URL フィールドに、 https://httpbin.org/basic-auth/user/password と入力する。
        注: URL はテスト用です。 httpbin.org エンドポイントは、 {user} および {password} のパスパラメータと一致する認証情報を Authorization ヘッダーに指定することで、基本認証によるログインをシミュレートできるサンドボックスを提供します。
      3. 「 TLS 」クライアントプロファイル(オプション) のドロップダウンリストから、を選択します No TLS profile
      4. 保存 をクリックします。

        認証 URL ユーザー・レジストリーの作成

        「リソース」ページが表示され、新規レジストリーがリストに組み込まれます。

        リソースページ

  2. 「 AuthURL 」レジストリを使用してログインするユーザーを認証するための OAuth プロバイダーを作成するには、以下の手順を実行します。
    1. リソース 」ページのナビゲーションリストで、 「 OAuth プロバイダー 」をクリックします。

      OAuth プロバイダー

    2. OAuth 」のプロバイダーセクションで、 「追加 」>「 ネイティブ OAuth プロバイダー」 をクリックします。

      OAuth プロバイダーを追加する

      OAuth 用ネイティブプロバイダーの作成 」ページが表示されます。

    3. Native OAuth プロバイダー 」セクションで、以下の情報を入力してください。
      1. タイトルの欄に、 MyNativeOAuthProvider と入力する。
      2. ゲートウェイの種類セクションで DataPower API Gateway ラジオボタン( FindBranch API で使用されるゲートウェイと同じ)を選択します。
        注: 各ネイティブ OAuth プロバイダーは、1つのゲートウェイタイプに適用されます。 ここで選択するゲートウェイ・タイプは、この新規プロバイダーを使用して保護される API で使用されるゲートウェイ・タイプと一致する必要があります
      3. 次へ をクリックします。

        ネイティブ OAuth プロバイダーの作成

    4. Supported grant types セクションで、以下のタスクを実行する。
      1. アクセスコードチェックボックスを選択し、他のすべてのグラントタイプの選択を解除します。

        なお、このチュートリアルでは、ネイティブの OAuth プロバイダーがどのように機能するかを説明するために、単一の助成金タイプを使用しています。

      2. 次へ をクリックします。

        ネイティブ OAuth プロバイダーの作成

    5. Scopes セクションで、以下のタスクを実行する。
      1. デフォルトのスコープを削除するには、 「削除」アイコン をクリックします。
      2. [追加] をクリックして、ネイティブの OAuth プロバイダーによって保護されるAPIの範囲を定義します。
      3. Name フィールドに details と入力する。
      4. 説明フィールドに Branch details
      5. 次へ をクリックします。

        OAuth プロバイダーの適用範囲

    6. Authorization Endpoint セクションで、以下のタスクを実行する。
      1. Authentication(認証) セクションで、 Authenticate application users using(使用するアプリケーション・ユーザーの認証 )ドロップダウン・リストから、 AuthURL を選択する。
      2. 次へ をクリックします。

        OAuth URL

    7. Native OAuth 」プロバイダーの概要セクションで設定を確認し、「 完了」 をクリックします。

      新しいプロバイダーが保存されると、そのプロバイダーの情報は編集可能になり、 情報ページに表示されます。

    8. Info ページで、以下のタスクを実行する。
      1. Enable debug response headers チェックボックスを選択します。

        このチェックボックスを選択すると、問題が発生した場合、応答ヘッダーにエラーの詳細が含まれます。

      2. 保存 をクリックします。

        権威性情報

      新規のネイティブ OAuth プロバイダーが完成しました。

  3. AuthURL レジス ト リ を構成 し て、 それがSandbox カ タ ロ グ内のAPIユーザーレジス ト リ と し て機能す る よ う にす る には、 以下の タ ス ク を実行 し ます。
    1. ナビゲーションペインで、 管理アイコン 管理アイコン をクリックする。
    2. 管理] ページで [サンドボックス] カタログタイルをクリックします。

      カタログの管理

      商品ページが表示されます。

    3. メニューバーで、 カタログ設定を選択します。

      カタログの設定

    4. 左側のペインで、 APIユーザー登録をクリックする。
    5. Add API user registries セクションで、 Editをクリックする。

      APIユーザー登録の追加

    6. APIユーザー登録の編集ページで、以下のタスクを実行します。
      1. チェックボックス AuthURL チェックボックスを選択する。
      2. 保存 をクリックします。

        APIユーザーレジストリの編集

        新しいレジストリは、以下の画像のようにAPIユーザーレジストリのリストに表示される。

        APIユーザー登録

  4. ネイティブの OAuth プロバイダーを設定し、 API Manager インターフェースで利用可能にするには、以下の手順を実行してください。
    1. 管理 ]>[ サンドボックス ]>[ カタログ設定]を選択する。
    2. 左側のペインで、 「 OAuth プロバイダー」 をクリックします。
    3. OAuth プロバイダー 」セクションで、 「編集」 をクリックします。

      OAuth プロバイダー

    4. 「 OAuth 」プロバイダーの編集ページで、次の操作を実行します。
      1. チェックボックス MyNativeOAuthProvider チェックボックスを選択する。
      2. 保存 をクリックします。

        OAuth プロバイダーの編集

      MyNativeOAuthProvider が、 API Manager で使用できるように設定されているプロバイダのリストに表示されます。

API への OAuth セキュリティーの追加

FindBranch API のセキュリティー定義を作成し、ネイティブ OAuth プロバイダー情報を組み込みます。

  1. API Managerの ホームページにアクセスする。

    APIマネージャーホーム

  2. ホームページでAPIと製品アイコンの開発 Develop アイコンをクリックします。

    または、 Develop APIs and products タイルを選択します。

  3. Develop] ページの[ APIs ]で、変更したいAPIを選択します。 例えば...、 FindBranch.

    作成

  4. APIの FindBranch APIの Design ページで、以下のタスクを実行する。
    1. 左のナビゲーションペインで、 Security Schemesを選択する。

      セキュリティー・スキーム

    2. Security Schemes セクションで、 Addをクリックする。

      セキュリティー・スキーム

    3. Add schema ポップアップ・ウィンドウで、以下のタスクを実行する。
      1. Security Definition Name (Key) フィールドに、 FindBranchOA と入力する。
      2. タイプのドロップダウンリストから、 oauth2 を選択する。
      3. OAuth プロバイダー (名前) (任意) 」のドロップダウンリストから、「 MyNativeOAuthProvider 」を選択します。
      4. フローのドロップダウンリストから、 Access Code を選択する。
      5. Authorization Url フィールドと Token Url フィールドにあらかじめ入力された値を保持する。
      6. 追加 をクリックします。

        スキーマの追加

        FindBranchOAセキュリティスキームの下に表示されるようになった。

        FindBranchOA

      7. 右側のペインにある「 FindBranchOA 」セクションで、 「詳細 」リンクをクリックし、ネイティブの OAuth プロバイダーに対して定義したスコープが表示されていることを確認します。

        詳細

      8. ページの右上にある「 保存 」をクリックします。
    4. 左側のナビゲーション・ペインで、 「セキュリティ 」を選択する。

      セキュリティー要件

    5. セキュリティ要件セクションで、以下のタスクを実行する。
      1. 追加 をクリックします。
      2. スキーマの追加ポップアップ・ウィンドウで ClientID および FindBranchOA チェック・ボックスを選択し、 Add をクリックします。

        セキュリティー要件の作成

        FindBranchOAセキュリティ要件セクションに表示されるようになった。

      3. FindBranchOA に隣接する Scopes ドロップダウンリストから、 details を選択する。
      4. 右上の「 保存 」をクリックする。

        セキュリティー要件

サンドボックス・テスト・アプリケーションへの OAuth リダイレクトの追加

API Manager内の OAuth 機能をテストするには、「Sandbox Test App」アプリケーションを使用してください。 SandboxテストアプリはSandboxカタログに含まれており、カタログ内で作成したすべてのAPIのデフォルト製品に自動的にサブスクライブされるため、 API Managerで APIをテストするために常に利用可能です。

注:OAuth のテストにこのアプリケーションを使用する前に、 OAuth へのリダイレクト( URL )が反映されるよう、アプリケーションを更新する必要があります。
  1. API Managerの ホームページにアクセスする。

    APIマネージャーホーム

  2. ホームのナビゲーションペインで、 Manage管理アイコン をクリックする。
  3. 管理] ページで [サンドボックス] カタログタイルをクリックします。

    カタログの管理

    商品ページが表示されます。

  4. メニューバーで「 アプリケーション 」をクリックします。
  5. アプリケーションのリストから、 Sandbox Test App アプリケーションを選択します。

    サンドボックス・カタログ (Sandbox catalog)

    アプリケーションの編集ページが表示されます。

  6. アプリケーションの編集ページで、以下のタスクを実行します。
    1. OAuth のリダイレクトURL(オプション) 」セクションで、「 リダイレクトを追加 」 URL をクリックします。
    2. OAuth 」のリダイレクトURL(任意) フィールドに、以下を入力してください https://example.com/redirect

      このフィールドは任意ですが、 OAuth プロバイダーの認証フローの値を入力する必要があります。 API Manager 内で OAuth をテストする場合、URL は適切な URL として形式設定された任意の値にすることができますが、テスト中にリダイレクト URL を指定するときには同じ値を使用する必要があります。

    3. OAuth のリダイレクトURL(任意) 」フィールドに値を入力したら、 「完了」 アイコンをクリックしてその値を保存します。

      OAuth リダイレクト URL

    4. アプリケーションを更新するには、 「保存 」をクリックします。

      アプリケーションの編集

OAuth セキュリティー実装のテスト

注: クロスオリジンリソース共有( CORS )の制限により、 macOS Catalinaプラットフォーム上のChromeまたはSafariブラウザでは、アセンブリテストツールを使用できません。

OAuth の実装をテストするには、 API Manager 内で「Sandbox Test App」を使用してAPIを実行してください。

注: APIを実行する前に
  • 最新のアップデートがオンラインでテストできるように、製品を公開する必要があります。
  • 認証コードを取得し、それを使ってAPIの実行を許可するアクセストークンを取得する必要がある。
  1. API Managerの ホームページにアクセスする。

    APIマネージャーホーム

  2. ホームページでAPIと製品アイコンの開発 Develop アイコンをクリックします。

    または、 Develop APIs and products タイルを選択します。

  3. Develop ページで、テストしたいAPIを選択する。 例えば...、 FindBranch.
  4. メニューバーで「 テスト 」を選択する。
  5. Testページで、以下のタスクを実行する。
    1. Authorizations + > Client ID & FindBranchOA をクリックします。

      支店を探す

    2. Authorize ポップアップウィンドウで、以下のタスクを実行します。
      1. タブを選択する。 Oauth2 タブを選択する。
      2. クライアントID フィールドに、クライアントIDを入力します。
      3. Client Secret(クライアントシークレット) フィールドに、クライアントシークレットを入力します。
      4. Scopes(スコープ) 」で、 details(詳細) チェックボックスを選択する。
      5. ユーザー名フィールドに、 user と入力する。
      6. Password フィールドに、 password と入力する。
      7. Get Token タブをクリックする。
      8. ポップアップダイアログボックスで、 API Managerのログイン認証情報を入力し、[ Sign In] をクリックするかENTERキーを押します。

        API Managerサインイン

        アクセストークンが生成され、 Authorize ポップアップウィンドウに表示されます。

      9. Access Token セクションで、トークンをコピーする。

        権限を与える

      10. 「適用」をクリックします。
  6. メニューバーでエクスプローラーを選択する。
  7. エクスプローラーページの左ペインで、 GET/detailsを選択する。
  8. 右ペインの「 GET : /details」 セクションで、以下のタスクを実行する。
    1. Try it タブを選択します。

      詳細の取得

    2. API Secret フィールドに、クライアントシークレットを入力します。
    3. Authorization セクションで、以下のタスクを実行する。
      1. 詳細チェックボックスを選択する。
      2. リダイレクトURI フィールドに、 https://example.com/redirect と入力する。
      3. 認証コードを取得するには、下にスクロールして 「認証」をクリックします。
      4. ポップアップ・ダイアログ・ボックスで、 ユーザーID フィールドに「 user 」と入力し、 パスワード・ フィールドに「 password 」と入力し、「 Sign In 」をクリックするかENTERを押す。

        APIマネージャのサインイン

        ユーザーが正常に認証されると、ブラウザーは、リダイレクト URL からのページを表示するウィンドウにリダイレクトされます。 許可コードがアドレス・バーに URL へのパラメーターとして組み込まれます。

        あなたの認証コードは、以下の画像に表示されているように、 URL のパラメータとしてアドレスバーに含まれます。 URL が https://example.com/redirect?code=AAPl-yX6XVtdROcU4_WJhETLPLjLOJoJIpAYSFf7-4FxcNJ2XfXbMWpu8LnruLtcgmkdjNeDstRi0aO-d8bZX888iQYrtyhfrYSgADZgWy84nw の場合、認証コードは AAPl-yX6XVtdROcU4_WJhETLPLjLOJoJIpAYSFf7-4FxcNJ2XfXbMWpu8LnruLtcgmkdjNeDstRi0aO-d8bZX888iQYrtyhfrYSgADZgWy84nw となります。


        ドメインの例
      5. ウィンドウのアドレスバーにある URL から認証コードをコピーし、「code=」以降の文字列をすべて取得してください。
        の認証コード URL
        例:
        https://example.com/redirect?code=AALMmZCyKnhY1HpZGfpHkFH7wDdsNh9R2hgDfGwMVgdEzBOTlnq5LPZ3x6RFPa3V7CzsGacH8LLGlafnqa3ntbh921n5rJE7W0_jC1cAtzcZEg
      6. Authorize フィールドに認証コードを入力する。
      7. Get Tokenをクリックしてアクセストークンを取得します。

        認証に成功すると、 トークンにアクセス・コードが入力される。

        ヒント: アクセストークンが表示されず、認証コードの有効期限が切れているというメッセージが表示された場合は、前のステップに戻って新しい認証コードをリクエストし、そのコードを使ってアクセストークンを生成してください。
      8. 送信をクリックする。

        APIのレスポンスには FindBranch APIのレスポンスはStatusコードを表示する200.レスポンスのヘッダー 情報と、各銀行支店のデータを含む本文情報を見ることができます。

        下にスクロールして、「 回答」のセクションで情報を見ることができる。

        応答本体

        応答ヘッダー

このチュートリアルで実行したこと

このチュートリアルでは、以下のアクティビティーを実行しました。
  • OAuth プロバイダーで使用するユーザー・レジストリーを作成しました。
  • ネイティブ OAuth プロバイダーを作成し、カタログ内で使用できるようにしました。
  • OAuth セキュリティーを API に追加しました。
  • テスト用に OAuth リダイレクトを指定するためにサンドボックス・テスト・アプリケーション (クライアント・アプリケーション) を更新しました。
  • 許可コードを取得し、それを交換してアクセス・トークンを取得し、保護された API を呼び出して、OAuth セキュリティーをテストしました。