しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure App Service の新しい Authentication 設定を試した

毎日、何回も Azure Portal から App Service / Azure Functions のブレードを開いているので、新しい項目があればすぐに気が付きます。なので今回の Authentication (Preview) も発見が早かったです。

何の変哲もない App Service Authentication (Easy Auth) の設定が新しくなりつつあるという話なのですが、若干の新機能もあったので試しておきます。

f:id:shiba-yan:20210201013709p:plain

ちなみに基本的な考え方は OpenID Connect に対応した新しい Authentication 周りを Azure Portal からも設定できるようにした、という感じです。ファイルベースは気軽ですが IaC との相性は悪かったです。

App Service Authentication の OpenID Connect 対応については以前書いたので紹介しておきます。

ファイルベースの場合は有効化のために ARM Explorer などで設定を変える必要がありましたが、Azure Portal からの場合は当然ながらそう言った設定は不要なので気楽です。

とりあえず新しい Authentication (Preview) を使ってみました。Authentication (Preview) を有効にすると古い Authentication / Authorization の設定は使えなくなるので注意が必要です。

f:id:shiba-yan:20210201013846p:plain

現在の Preview では Microsoft しか Identity Provider を選べないですが、この辺りは今後徐々に増えていくようです。ひっそりと GitHub が増えているのが古い設定との違いです。

f:id:shiba-yan:20210201014409p:plain

よく見ると GitHub が Github になっていて若干 typo していました。そのうち直ると思います。

OpenID Connect がグレーアウトされた選択肢にすら入っていないのが気になりましたが、Twitter で Chris が間もなく追加されると教えてくれたので安心です。

API 的には OpenID Connect 対応 Provider は他と違って複数追加できるようになるはずなので、その辺りでちょっと時間がかかりそうな気配はあります。この辺りは Azure AD B2C っぽさもありますね。

既に新しい Authentication (Preview) で使われている API は当然ながら ARM Template からも使えるようになっています。リファレンスも公開されているので、読めばどんなことができるのか想像がつきます。

一先ずは現在利用可能な Microsoft を選んで設定を行っていきます。この Microsoft というのは Azure AD のことを指していますが、古い設定でいうところの MSA っぽいので若干混乱します。

この設定画面から Azure AD アプリケーションを作成できるのはこれまで通りですが、Supported account types に Microsoft account 向けの項目が追加されました。

f:id:shiba-yan:20210201014236p:plain

古い Authentication に慣れていたので、この辺り分かりにくいと Twitter で話していたら Chris が背景を説明してくれたのでクリアになりました。

詳細はツイートを読んでもらえばよいですが、今回のアップデートで AAD v2 エンドポイントを使うように変わったので、MSA も Azure AD で同じように扱えるようになったらしいです。

これまでは v1.0 エンドポイントが使われていたので、MSAL と組み合わせる時にいろいろと苦労がありましたが、新しい Authentication (Preview) では解消されそうです。

後の設定は未認証時の動作設定ぐらいですが、これまで 302 でログイン画面にリダイレクトさせるぐらいしかなかったのが、401 や 403 を明示的に返すオプションが増えていました。

f:id:shiba-yan:20210201014244p:plain

User-Agent によってこれまで 302 リダイレクトさせるかどうかを判別していたので、Web API を App Service Authentication で認証させる場合には明示的な User-Agent の加工や、X-Request-With をリクエストヘッダーに付ける必要がありましたが不要になります。

最後に Azure AD アプリケーションを新規作成する場合は、Graph API のパーミッションを同時に指定できるようになっていました。この辺りは通常の Azure AD アプリケーションを作成する流れと同じでした。

f:id:shiba-yan:20210201014325p:plain

油断すると User.Read のパーミッションが無くなるので気を付けたいところです。というか Azure Portal 側の不具合っぽいのでフィードバックして直してもらおうかと思います。

これで保存すれば Azure AD を使ったログインが有効になるので難しいことはないですね。基本的には UI の変更がメインではありますが、1 点だけ大きな変更点として Client Secret などのセキュアな情報は App Settings に保存されるように変わりました。

f:id:shiba-yan:20210201014551p:plain

OpenID Connect を使うときと同じ仕組みに統一されたという話ですが、知っておかないと ARM Template や Terraform などで設定する時にはまりそうです。

最後になりましたが、既存の Authentication の移行には一度設定を全て削除してから、新しい Authentication の画面から再度行う必要があるので若干面倒です。設定が排他になっているので仕方ないですが、作業中は一瞬認証が外れるので注意する必要があります。