はじめに
Azure Web Appsのリソースの中には「認証」の設定項目がある。
クイックスタート - Web アプリにアプリ認証を追加する - Azure App Service | Microsoft Learn
認証を設定すると、指定したプロバイダーで認証されたユーザーだけがWeb Appsで公開されているサイトにアクセスできるようになる。
今回は「認証」の中の「IDの要件」の項目について、設定値を変えた検証をしてみる。
検証環境
- 対象のWeb Apps
- テナント1のリソース
- ユーザーA1が所有者
- 設定値を変える項目
- Web Apps>認証>Microsoftプロバイダー>その他のチェック>ID の要件
- 確認すること
- 下記ユーザーがそれぞれの設定値の場合にアクセスできるか確認する。
- テナント1のユーザーA1
- テナント1のユーザーA2
- テナント2のユーザーB1
- ログインなし
- 下記ユーザーがそれぞれの設定値の場合にアクセスできるか確認する。
検証1 認証なし
Web Appsの認証の設定がない場合
【結果】
すべての場合でアクセスができた。
- テナント1のユーザーA1:OK
- テナント1のユーザーA2:OK
- テナント2のユーザーB1:OK
- ログインなし:OK
検証2 デフォルト値
Web AppsにMicrosoftのIDプロバイダーをデフォルト値で追加した場合
【設定値】
IDの要件:任意の ID からの要求を許可する
【結果】
テナント1のユーザーのみアクセスできた。
- テナント1のユーザーA1:OK
- テナント1のユーザーA2:OK
- テナント2のユーザーB1:NG
- ログインなし:NG
【詳細】
テナント1のユーザーA1の場合
アクセス許可の画面が出たのちにアクセスできる。
テナント1のユーザーA2の場合
アクセス許可の画面が出たのちにアクセスできる。
テナント2のユーザーB1の場合
サインインエラーになる。
ログインなしの場合
サインイン画面に遷移するため、ログインなしでアクセスはできない。
検証3 特定のIDを指定する(所有者のみ)
IDの要件の設定値を変更した場合
【設定値】
IDの要件:特定の ID からの要求を許可する
許可されたID:テナント1のユーザーA1のオブジェクトID
【結果】
許可したIDのユーザーのみアクセスできた。
- テナント1のユーザーA1:OK
- テナント1のユーザーA2:NG
- テナント2のユーザーB1:NG
- ログインなし:NG
【詳細】
テナント1のユーザーA2の場合
403エラーになる
検証4 特定のIDを指定する(所有者以外のみ)
IDの要件の設定値を変更した場合
【設定値】
IDの要件:特定の ID からの要求を許可する
許可されたID:テナント1のユーザーA2のオブジェクトID
【結果】
許可したIDのユーザーのみアクセスできた。
- テナント1のユーザーA1:NG
- テナント1のユーザーA2:OK
- テナント2のユーザーB1:NG
- ログインなし:NG
【詳細】
テナント1のユーザーA1の場合
403エラーになる。
Web Appsの所有者でさえアクセスできなくなるのは意外だった。
検証5 特定のIDを指定する(テナント外ユーザーのみ)
IDの要件の設定値を変更した場合
【設定値】
IDの要件:特定の ID からの要求を許可する
許可されたID:テナント2のユーザーB1のオブジェクトID
【結果】
どのユーザーもアクセスできない。
- テナント1のユーザーA1:NG
- テナント1のユーザーA2:NG
- テナント2のユーザーB1:NG
- ログインなし:NG
【詳細】
テナント1のユーザーA1の場合
403エラーになる。
テナント1のユーザーA2の場合
403エラーになる。
テナント2のユーザーB1の場合
アプリが所属するテナントへのアクセス権がない旨のエラーになる。
「IDの要件」と「テナントの要件」はORではなくANDらしい。
補足メモ
- 認証の設定を変更した後はWeb Appsを再起動すると確実に設定が反映される気がする。
- ブラウザのキャッシュに認証情報が残っている可能性があるので、確実に確認するならシークレットウィンドウが良い。