Azure App Service のシンプルな Web ページで Azure AD 認証を有効化する際の手順の記録です。シークレットキーを用いた Web API アクセスではなく、ブラウザでユーザー認証を受けるシンプルなシナリオを想定します。マルチテナントのシナリオは Microsoft Docs (Manage identity in multitenant applications) により詳しい説明があります。
前提条件
- Azure Active Directory のテナントは既に作成されているものとします
- サブスクリプション、リソースグループ、リソースに対する適切な権限があるものとします
- App Service Plan および App Service は既に作成されているものとします
- Azure AD アプリを新たに作成する場合、その権限があるものとします
手順
- 対象の App Service を選択して 認証/承認 (Authentication / Authorization) のブレードを開きます
- 「App Service Authentication」で On を選び、「認証プロバイダー (Authentication Providers)」では Azure Active Directory を選択します
- App Service と AD アプリと関連付けます。既にある AD アプリを使用せず、新しく作成する場合「管理モード (Management mode)」は 簡易 (Express)、Create New AD App を選び、AD アプリの名前を入力します
同一のテナントに既に存在するADアプリを使用する場合は Select Existing AD App から対象のアプリを選びます。異なるテナントに存在するマルチテナント認証の AD アプリを使用する場合は「Advanced」の画面から client id と issuer url を入力します - OK ボタンで前の画面に戻り、保存します。認証のないリクエストを受けたときにログインへ誘導させる場合(つまり、未認証のアクセスを許可しない場合)は「要求が認証されない場合に実行するアクション」に Azure Active Directory でのログイン を選択します
- 上記の構成を保存すると App Service にアクセスしたときに認証を求められるようになります
- 登録した AD アプリには「リダイレクトURI」が設定されていること、暗黙的な許可 (Implicit grant) の「ID トークン」がオンになっていることを確認します。この例でリダイレクト URI は
https://{APP_SERVICE_DOMAIN}/.auth/login/aad/callback
となっています
ASP.NET Web アプリケーション (.NET Framework) と App Service を使用している場合 Web サーバー環境変数 Request.ServerVariables で認証タイプ、ユーザー名の情報を取得できます
サーバー環境変数 | 説明 |
---|---|
ServerVariables["AUTH_TYPE"] | ユーザーの認証方法が設定される。AD認証の場合 aad となる |
ServerVariables["AUTH_USER"] | ユーザーの名前が設定される。例えば *@*.onmicrosoft.com 等 |
ServerVariables["AUTH_PASSWORD"] | Basic認証の場合にダイアログに入力された値が設定されるとのこと。AD認証では使用されない |
ServerVariables["LOGON_USER"] | Windows 認証の場合に Windows アカウント名が設定されるとのこと。AD認証では AUTH_USER と同じユーザー名が設定される |
ServerVariables["REMOTE_USER"] | ユーザーから送信されたマップされていないユーザー名とのこと。AUTH_USER と同じユーザー名が設定される |
Request.IsAuthenticated | 認証されているかを表す真偽値 |