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を登録する」お読みください。
[Auth0 Dashboard]>[Applications(アプリケーション)]>[API]に移動して、[Create API(APIの作成)]を選択します。
次のパラメーターを設定します。
フィールド 値 Name(名前) Basic Calculator
Identifier(識別子) basic-calculator
Signing Algorithm(署名アルゴリズム) RS256
[Create(作成)]を選択します。
通常のWebアプリケーションを作成
Auth0で通常のWebアプリケーション(RWA)を作成して、AzureのOAuth 2.0認可サーバーと通信する必要があります。
[Auth0 Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動して、[Create Application(アプリケーションの作成)]ボタンを選択します。
アプリケーションの[Name(名前)]を入力し、アプリケーションのタイプとして[Regular Web Applications(通常のWebアプリケーション)]を選択します。
接続を作成して有効化
Auth0で接続を作成し、アプリケーション用に有効にする必要があります。
[Auth0 Dashboard] > [Authentication(認証)]> [Database(データベース)]に移動して、[Create DB Connection(データベース接続を作成)]を選択します。
接続の[Name(名前)]を入力します。ユーザーのソースを反映する名前を選択することをお勧めします(たとえば、Facebook資格情報を使用するユーザーを含む接続の場合は
Facebook
、ユーザーがサイトにサインアップするデータベース接続の場合はsite-sign-ups
)。[Create(作成)]を選択します。
接続の[Settings(設定)]ページに移動します。
[Applications(アプリケーション)]ビューに切り替えます。テナント上のすべてのアプリケーションの一覧が表示されます。
以前に作成したアプリケーションを切り替えて、接続用に有効にします。
ユーザーを作成
認証と認可をテストするには、接続に少なくとも1人のユーザーが必要です。接続用の既存のユーザーセットがない場合は、手動で作成できます。
[Auth0 Dashboard]>[User Management(ユーザー管理)]>[Users(ユーザー)]に移動して、[Create User(ユーザーの作成)]を選択します。
電子メールとパスワードを入力し、[接続]フィールドで、ステップ3で作成した接続を選択します。
[Create(作成)]を選択します。
Azureを構成
Azure API Management Serviceの作成
APIを管理するには、AzureにAPI Management Serviceインスタンスを作成する必要があります。
ナビゲーションバーで、[Create a resource(リソースの作成)] を選択します。
リダイレクトされたら、Web > API Managementを選択します。
次の構成変数を指定します。
パラメーター 説明 Name サービスの名前(サービスのアクセスに必要なURLの作成にも使用される) Subscription サービスに使用するAzureサブスクリプションプラン Resource group ライフサイクルや権限、ポリシーを共有するリソースのコレクション。既存のリソースグループを使用するか、新たに作成することができます(作成する場合はグループ名を提供する必要があります) Location APIインスタンスをサービスする場所を選択 Organization name 組織の名前 Administrator email このインスタンスを管理する人のメールアドレス Pricing tier 希望する価格レベル。これによって、API呼び出しの回数やデータ転送量の上限が決まります。Developerプラン以上を選択する必要があります。Consumptionプランでは、この統合が動作するのに十分な機能性が提供されていません。 [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認可サーバーとして登録する必要があります。
ナビゲーションバーの近くのAPI管理サービスインスタンスのOAuth 2.0 + OpenID Connectエリアを見つけます。[OAuth 2.0]を選択し、[Add(追加)]を選択します。
[Add OAuth2 service(OAuth2サービスの構成の追加)] 構成画面に移動し、[Authorization Code grant type(認可コードの付与タイプ)]を選択します。
次のパラメーターを設定します。
パラメーター 説明 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(デフォルトのスコープ) 必要ならば、デフォルトのスコープを指定します。 [Client Credentials(クライアント資格情報)]セクションで、[Client Credentials(クライアントID)]フィールドにAuth0 ApplicationsクライアントIDと[Client secret(クライアントシークレット)]フィールドにクライアントシークレットを入力します。
[Redirect URI(リダイレクトURI)] ビューに切り替え、[Authorization code flow grant](認可コードフローの付与)]フィールドのURI値をコピーします。
[Create(作成)]を選択します。
Auth0を使用するようにAzure APIを構成します
AzureでOAuth 2.0認可サーバーを作成したら、ユーザー認可にAuth0を使用するようにAzure APIを更新する必要があります。
ナビゲーションの[API]セクションの下で、APIを選択します。
Basic Calculator APIを選択し、[Design(デザイン)]ビューに移動します。
[Settings(設定)]ビューに切り替えます。
セキュリティセクションに移動し、[ユーザー認可]で [OAuth 2.0]を選択します。
[Authorization Server(認可サーバー)]フィールドの前のステップで構成したサーバーを選択します。
[Save(保存)]をクリックします。
Auth0で許可されたCallbackURLを設定
Azure APIがプロビジョニングされ、ユーザー認可にAuth0を使用するように構成されたら、Auth0アプリケーションを更新する必要があります。
[Auth0 Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動します。
アプリケーションを選択し、次に[Settings(設定)]ビューに切り替えます。
を[Allowed Callback URL(許可されたコールバックURL)]フィールドに入力します。
[Save(保存)]をクリックします。
統合のテスト
Azure Portalで、API Management Serviceのインスタンスを開きます。
[Developer Console(開発者コンソール)]を選択して、開発者向けのAPIを起動します。
[API] > [Basic Calculator]に移動します。これにより、2つの整数を追加できる
[GET]
呼び出しを行うことができるページが開きます。[Try It(試す)]を選択します。これにより、呼び出しのパラメーターを提供できるページが表示されます。
[Authorization(認可)]セクションに移動し、[Authorization Code(認可コード)](Auth0フィールドの横)を選択します。
Auth0ログインウィジェットがポップアップウィンドウに表示されます(表示されない場合は、ブラウザのpop-upブロック機能が無効になっていることを確認してください)。ステップ4で作成したAuth0ユーザーの資格情報を入力し、ログインします。
正常にログインできた場合は、APIの呼び出しに使用できるアクセストークンの有効期限を示すメッセージが表示されます。
下部に移動し、[Send(送信)]を選択します。要求が成功すると、ページの下部に
HTTP 200
応答を含むメッセージが表示されます。
アクセストークンのJWT検証ポリシーを構成
前のステップでは、ユーザーが開発者コンソールから呼び出しを行おうとすると、サインインするように求められます。開発者コンソールは、API要求に含めるアクセストークンをユーザーの代わりに取得しようとします。すべてのアクセストークンは、Authorization(認可)
ヘッダーを介してAPIに渡されます。
各要求に含まれるアクセストークンを検証する場合は、Validate JWT(JWTの検証)ポリシーを使用して行うことができます。setting an API Management policy(API管理ポリシーの設定)については、Microsoftのドキュメントを参照してください。