このチュートリアルでは、API Managerのユーザーインターフェースを使用して、ネイティブの OAuth プロバイダーを作成する方法について説明します。
開始前に
このチュートリアルでは、事前定義された FindBranch API を使用します。 このチュートリアル用に環境を準備するには、以下のタスクを実行してください。
- 「カタログの作成と設定 」の手順に従って、この DataPower® API Gateway サービスをサンドボックス・カタログに追加します。
少なくとも 1 つのゲートウェイを使用するように、サンドボックス・カタログを構成する必要があります。 このチュートリアルでは、FindBranch API が使用するゲートウェイと同じゲートウェイを使用する必要があります。
- チュ ートリアル「APIのインポート」の説明に従って、 FindBranch APIをインポートし、有効にしてください。
ネイティブ OAuth プロバイダーの作成
API Manager でネイティブの OAuth プロバイダーを作成するには、外部認証 URL を使用してユーザーを検証するユーザーレジストリを設定し、そのレジストリでログインするユーザーを認証するプロバイダーを作成します。
- OAuth を使用してユーザーを認証するために使用できるユーザー・レジストリーを作成します。
- API Managerにログインする。
- ホーム・ ページで「 リソースの管理 」タイルをクリックする。

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

- Create authentication URL user registry ページで、以下の情報を入力する。
- タイトルと 表示名の欄に、 AuthURL と入力する。
タイトルと 表示名フィールドに AuthURL を入力することで、このレジストリが認証 URL で構成されていることを簡単に判断できる。
- フィールドに URL フィールドに、 https://httpbin.org/basic-auth/user/password と入力する。
注: URL はテスト用です。
httpbin.org エンドポイントは、 {user} および {password} のパスパラメータと一致する認証情報を Authorization ヘッダーに指定することで、基本認証によるログインをシミュレートできるサンドボックスを提供します。
- 「 TLS 」クライアントプロファイル(オプション) のドロップダウンリストから、を選択します No TLS profile。
- 保存 をクリックします。

「リソース」ページが表示され、新規レジストリーがリストに組み込まれます。
- 「 AuthURL 」レジストリを使用してログインするユーザーを認証するための OAuth プロバイダーを作成するには、以下の手順を実行します。
- 「リソース 」ページのナビゲーションリストで、 「 OAuth プロバイダー 」をクリックします。

- 「 OAuth 」のプロバイダーセクションで、 をクリックします。

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

- Supported grant types セクションで、以下のタスクを実行する。
- アクセスコードチェックボックスを選択し、他のすべてのグラントタイプの選択を解除します。
なお、このチュートリアルでは、ネイティブの OAuth プロバイダーがどのように機能するかを説明するために、単一の助成金タイプを使用しています。
- 次へ をクリックします。

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

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

- 「 Native OAuth 」プロバイダーの概要セクションで設定を確認し、「 完了」 をクリックします。
新しいプロバイダーが保存されると、そのプロバイダーの情報は編集可能になり、 情報ページに表示されます。
- Info ページで、以下のタスクを実行する。
- Enable debug response headers チェックボックスを選択します。
このチェックボックスを選択すると、問題が発生した場合、応答ヘッダーにエラーの詳細が含まれます。
- 保存 をクリックします。

新規のネイティブ OAuth プロバイダーが完成しました。
- AuthURL レジス ト リ を構成 し て、 それがSandbox カ タ ロ グ内のAPIユーザーレジス ト リ と し て機能す る よ う にす る には、 以下の タ ス ク を実行 し ます。
- ナビゲーションペインで、 管理アイコン
をクリックする。
- 管理] ページで [サンドボックス] カタログタイルをクリックします。

商品ページが表示されます。
- メニューバーで、 カタログ設定を選択します。

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

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

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

- ネイティブの OAuth プロバイダーを設定し、 API Manager インターフェースで利用可能にするには、以下の手順を実行してください。
- 選択する。
- 左側のペインで、 「 OAuth プロバイダー」 をクリックします。
- 「 OAuth プロバイダー 」セクションで、 「編集」 をクリックします。

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

MyNativeOAuthProvider が、 API Manager で使用できるように設定されているプロバイダのリストに表示されます。
API への OAuth セキュリティーの追加
FindBranch API のセキュリティー定義を作成し、ネイティブ OAuth プロバイダー情報を組み込みます。
- API Managerの ホームページにアクセスする。

- ホームページで、
Develop アイコンをクリックします。または、 Develop APIs and products タイルを選択します。
- Develop] ページの[ APIs ]で、変更したいAPIを選択します。 例えば...、 FindBranch.

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

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

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

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

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

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

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

FindBranchOA がセキュリティ要件セクションに表示されるようになった。
- FindBranchOA に隣接する Scopes ドロップダウンリストから、 details を選択する。
- 右上の「 保存 」をクリックする。

サンドボックス・テスト・アプリケーションへの OAuth リダイレクトの追加
API Manager内の OAuth 機能をテストするには、「Sandbox Test App」アプリケーションを使用してください。 SandboxテストアプリはSandboxカタログに含まれており、カタログ内で作成したすべてのAPIのデフォルト製品に自動的にサブスクライブされるため、 API Managerで APIをテストするために常に利用可能です。
注:OAuth のテストにこのアプリケーションを使用する前に、 OAuth へのリダイレクト( URL )が反映されるよう、アプリケーションを更新する必要があります。
- API Managerの ホームページにアクセスする。

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

商品ページが表示されます。
- メニューバーで「 アプリケーション 」をクリックします。
- アプリケーションのリストから、 Sandbox Test App アプリケーションを選択します。

アプリケーションの編集ページが表示されます。
- アプリケーションの編集ページで、以下のタスクを実行します。
- 「 OAuth のリダイレクトURL(オプション) 」セクションで、「 リダイレクトを追加 」 URL をクリックします。
- 「 OAuth 」のリダイレクトURL(任意) フィールドに、以下を入力してください https://example.com/redirect
このフィールドは任意ですが、 OAuth プロバイダーの認証フローの値を入力する必要があります。 API Manager 内で OAuth をテストする場合、URL は適切な URL として形式設定された任意の値にすることができますが、テスト中にリダイレクト URL を指定するときには同じ値を使用する必要があります。
- 「 OAuth のリダイレクトURL(任意) 」フィールドに値を入力したら、 「完了」 アイコンをクリックしてその値を保存します。

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

OAuth セキュリティー実装のテスト
注: クロスオリジンリソース共有( CORS )の制限により、 macOS Catalinaプラットフォーム上のChromeまたはSafariブラウザでは、アセンブリテストツールを使用できません。
OAuth の実装をテストするには、 API Manager 内で「Sandbox Test App」を使用してAPIを実行してください。
注: APIを実行する前に
- 最新のアップデートがオンラインでテストできるように、製品を公開する必要があります。
- 認証コードを取得し、それを使ってAPIの実行を許可するアクセストークンを取得する必要がある。
- API Managerの ホームページにアクセスする。

- ホームページで、
Develop アイコンをクリックします。または、 Develop APIs and products タイルを選択します。
- Develop ページで、テストしたいAPIを選択する。 例えば...、 FindBranch.
- メニューバーで「 テスト 」を選択する。
- Testページで、以下のタスクを実行する。
- をクリックします。

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

アクセストークンが生成され、 Authorize ポップアップウィンドウに表示されます。
- Access Token セクションで、トークンをコピーする。

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

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

ユーザーが正常に認証されると、ブラウザーは、リダイレクト URL からのページを表示するウィンドウにリダイレクトされます。 許可コードがアドレス・バーに URL へのパラメーターとして組み込まれます。
あなたの認証コードは、以下の画像に表示されているように、 URL のパラメータとしてアドレスバーに含まれます。 URL が https://example.com/redirect?code=AAPl-yX6XVtdROcU4_WJhETLPLjLOJoJIpAYSFf7-4FxcNJ2XfXbMWpu8LnruLtcgmkdjNeDstRi0aO-d8bZX888iQYrtyhfrYSgADZgWy84nw の場合、認証コードは AAPl-yX6XVtdROcU4_WJhETLPLjLOJoJIpAYSFf7-4FxcNJ2XfXbMWpu8LnruLtcgmkdjNeDstRi0aO-d8bZX888iQYrtyhfrYSgADZgWy84nw となります。

- ウィンドウのアドレスバーにある URL から認証コードをコピーし、「code=」以降の文字列をすべて取得してください。

例:
https://example.com/redirect?code=AALMmZCyKnhY1HpZGfpHkFH7wDdsNh9R2hgDfGwMVgdEzBOTlnq5LPZ3x6RFPa3V7CzsGacH8LLGlafnqa3ntbh921n5rJE7W0_jC1cAtzcZEg
- Authorize フィールドに認証コードを入力する。
- Get Tokenをクリックしてアクセストークンを取得します。
認証に成功すると、 トークンにアクセス・コードが入力される。
ヒント: アクセストークンが表示されず、認証コードの有効期限が切れているというメッセージが表示された場合は、前のステップに戻って新しい認証コードをリクエストし、そのコードを使ってアクセストークンを生成してください。
- 送信をクリックする。
APIのレスポンスには FindBranch APIのレスポンスはStatusコードを表示する200.レスポンスのヘッダー 情報と、各銀行支店のデータを含む本文情報を見ることができます。
下にスクロールして、「 回答」のセクションで情報を見ることができる。


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