Azure API Managementとの統合

Before you start

Azure Portalにアクセス可能なMicrosoftアカウントが必要です。

Azure API Managementサービスを使用すると、新しいAPIを作成したり、既存のAPI定義をインポートしたり、承認されたオーディエンスが使用して公開したりできます。Auth0 を使用すると、APIユーザーの認証(OAuth 2.0標準を使用)が簡単になります。

このチュートリアルでは、Azure API Managementによって管理されるBasic Calculator APIにユーザーがアクセスするときに、Auth0を使用してユーザーを認証および承認する方法について説明します。

Auth0を構成する

APIの作成

Azure API Management Serviceによって管理されるAPIを表すために、Auth0でAPIを作成する必要があります。詳細については、「APIを登録する」お読みください。

  1. [Auth0 Dashboard]>[Applications(アプリケーション)]>[API]に移動して、[Create API(APIの作成)]を選択します。

  2. 次のパラメーターを設定します。

    フィールド
    Name(名前) Basic Calculator
    Identifier(識別子) basic-calculator
    Signing Algorithm(署名アルゴリズム) RS256

  3. [Create(作成)]を選択します。

通常のWebアプリケーションを作成

Auth0で通常のWebアプリケーション(RWA)を作成して、AzureのOAuth 2.0認可サーバーと通信する必要があります。

  1. [Auth0 Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動して、[Create Application(アプリケーションの作成)]ボタンを選択します。

  2. アプリケーションの[Name(名前)]を入力し、アプリケーションのタイプとして[Regular Web Applications(通常のWebアプリケーション)]を選択します。

接続を作成して有効化

Auth0で接続を作成し、アプリケーション用に有効にする必要があります。

  1. [Auth0 Dashboard] > [Authentication(認証)]> [Database(データベース)]に移動して、[Create DB Connection(データベース接続を作成)]を選択します。

  2. 接続の[Name(名前)]を入力します。ユーザーのソースを反映する名前を選択することをお勧めします(たとえば、Facebook資格情報を使用するユーザーを含む接続の場合はFacebook、ユーザーがサイトにサインアップするデータベース接続の場合はsite-sign-ups)。

  3. [Create(作成)]を選択します。

  4. 接続の[Settings(設定)]ページに移動します。

  5. [Applications(アプリケーション)]ビューに切り替えます。テナント上のすべてのアプリケーションの一覧が表示されます。

  6. 以前に作成したアプリケーションを切り替えて、接続用に有効にします。

ユーザーを作成

認証と認可をテストするには、接続に少なくとも1人のユーザーが必要です。接続用の既存のユーザーセットがない場合は、手動で作成できます。

  1. [Auth0 Dashboard]>[User Management(ユーザー管理)]>[Users(ユーザー)]に移動して、[Create User(ユーザーの作成)]を選択します。

  2. 電子メールパスワードを入力し、[接続]フィールドで、ステップ3で作成した接続を選択します。

  3. [Create(作成)]を選択します。

Azureを構成

Azure API Management Serviceの作成

APIを管理するには、AzureにAPI Management Serviceインスタンスを作成する必要があります。

  1. ナビゲーションバーで、[Create a resource(リソースの作成)] を選択します。

  2. リダイレクトされたら、Web > API Managementを選択します。

  3. 次の構成変数を指定します。

    パラメーター 説明
    Name サービスの名前(サービスのアクセスに必要なURLの作成にも使用される)
    Subscription サービスに使用するAzureサブスクリプションプラン
    Resource group ライフサイクルや権限、ポリシーを共有するリソースのコレクション。既存のリソースグループを使用するか、新たに作成することができます(作成する場合はグループ名を提供する必要があります)
    Location APIインスタンスをサービスする場所を選択
    Organization name 組織の名前
    Administrator email このインスタンスを管理する人のメールアドレス
    Pricing tier 希望する価格レベル。これによって、API呼び出しの回数やデータ転送量の上限が決まります。Developerプラン以上を選択する必要があります。Consumptionプランでは、この統合が動作するのに十分な機能性が提供されていません。

  4. [Create(作成)]を選択してサービスのプロビジョニングを開始します(完了するまでに最大15分かかる場合があります)。

サンプルAPIのインポート

このチュートリアルでは、Microsoftが提供するBasic Calculator APIをインポートして使用します。詳細な手順については、Microsoftからの[Import and Publish Your First API(最初のAPIのインポートと公開)]を参照してください。

完了したら、[Create(作成)]を選択してAPIをインポートします。APIが完全にインポートされると、概要ページにリダイレクトされます。

OAuth 2.0認可サーバーの設定

Auth0を使用してAzure APIをセキュリティで保護するには、Auth0をOAuth 2.0認可サーバーとして登録する必要があります。

  1. ナビゲーションバーの近くのAPI管理サービスインスタンスのOAuth 2.0 + OpenID Connectエリアを見つけます。[OAuth 2.0]を選択し、[Add(追加)]を選択します。

  2. [Add OAuth2 service(OAuth2サービスの構成の追加)] 構成画面に移動し、[Authorization Code grant type(認可コードの付与タイプ)]を選択します。

  3. 次のパラメーターを設定します。

    パラメーター 説明
    Display name(表示名) Auth0など、認可サーバーのわかりやすい名前を入力します。
    Id このフィールドは入力した表示名に基づいて自動的に入力されます。
    Description(説明) Auth0 API Authenticationなど、認可サーバーの説明を入力します。
    Client registration page URL(クライアント登録ページのURL) placeholderとしてhttps://placeholder.contoso.comを入力します。
    Authorization code grant types(認可コード付与タイプ) Authorization codeを選択します。
    Authorization endpoint URL(認可エンドポイントURL) テナントのOIDCディスカバリーエンドポイントを参照してaudienceパラメーターを追加します。例:https://{yourDomain}/authorize?audience={API_AUDIENCE}
    Authorization request method(認可要求メソッド) デフォルトはGETです。
    Token endpoint URL(トークンエンドポイントURL) テナントのOIDCディスカバリーエンドポイントを参照します。
    Client authentication methods(クライアントの認証方法) Basicを選択します。
    Access Token sending method(アクセストークンの送信方法) Authorization headerを選択します。
    Default scope(デフォルトのスコープ) 必要ならば、デフォルトのスコープを指定します。

  4. [Client Credentials(クライアント資格情報)]セクションで、[Client Credentials(クライアントID)]フィールドにAuth0 ApplicationsクライアントIDと[Client secret(クライアントシークレット)]フィールドにクライアントシークレットを入力します。

  5. [Redirect URI(リダイレクトURI)] ビューに切り替え、[Authorization code flow grant](認可コードフローの付与)]フィールドのURI値をコピーします。

  6. [Create(作成)]を選択します。

Auth0を使用するようにAzure APIを構成します

AzureでOAuth 2.0認可サーバーを作成したら、ユーザー認可にAuth0を使用するようにAzure APIを更新する必要があります。

  1. ナビゲーションの[API]セクションの下で、APIを選択します。

  2. Basic Calculator APIを選択し、[Design(デザイン)]ビューに移動します。

  3. [Settings(設定)]ビューに切り替えます。

  4. セキュリティセクションに移動し、[ユーザー認可] [OAuth 2.0]を選択します。

  5. [Authorization Server(認可サーバー)]フィールドの前のステップで構成したサーバーを選択します。

  6. [Save(保存)]をクリックします。

Auth0で許可されたCallbackURLを設定

Azure APIがプロビジョニングされ、ユーザー認可にAuth0を使用するように構成されたら、Auth0アプリケーションを更新する必要があります。

  1. [Auth0 Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動します。

  2. アプリケーションを選択し、次に[Settings(設定)]ビューに切り替えます。

  3. [Allowed Callback URL(許可されたコールバックURL)]フィールドに入力します。

  4. [Save(保存)]をクリックします。

統合のテスト

Azure Portalで、API Management Serviceのインスタンスを開きます。

  1. [Developer Console(開発者コンソール)]を選択して、開発者向けのAPIを起動します。

  2. [API] > [Basic Calculator]に移動します。これにより、2つの整数を追加できる[GET] 呼び出しを行うことができるページが開きます。

  3. [Try It(試す)]を選択します。これにより、呼び出しのパラメーターを提供できるページが表示されます。

  4. [Authorization(認可)]セクションに移動し、[Authorization Code(認可コード)]Auth0フィールドの横)を選択します。

  5. Auth0ログインウィジェットがポップアップウィンドウに表示されます(表示されない場合は、ブラウザのpop-upブロック機能が無効になっていることを確認してください)。ステップ4で作成したAuth0ユーザーの資格情報を入力し、ログインします。

  6. 正常にログインできた場合は、APIの呼び出しに使用できるアクセストークンの有効期限を示すメッセージが表示されます。

  7. 下部に移動し、[Send(送信)]を選択します。要求が成功すると、ページの下部にHTTP 200応答を含むメッセージが表示されます。

アクセストークンのJWT検証ポリシーを構成

前のステップでは、ユーザーが開発者コンソールから呼び出しを行おうとすると、サインインするように求められます。開発者コンソールは、API要求に含めるアクセストークンをユーザーの代わりに取得しようとします。すべてのアクセストークンは、Authorization(認可)ヘッダーを介してAPIに渡されます。

各要求に含まれるアクセストークンを検証する場合は、Validate JWT(JWTの検証)ポリシーを使用して行うことができます。setting an API Management policy(API管理ポリシーの設定)については、Microsoftのドキュメントを参照してください。