放浪軍師のアプリ開発局

VTuberみたいなアプリケーション夏狂乱など、自由気ままにアプリを開発したりしています。他にもいろいろやってます。尚、このブログはわからないところを頑張って解決するブログであるため、正しい保証がありません。ご注意ください。

Azure Static Web Apps の認証と認可をローカル開発環境で試したい

こんにちは。最近個人開発に励んでいる、そこそこ忙しい身の放浪軍師です。さて今回は、その個人開発でも使いたい Azure Static Web Apps のローカル環境準備についてです。

Azure Static Web Apps の認証と認可をローカル開発環境で試したい

サーバーレスなサービスを気軽に提供できる Azure Static Web Apps には、認証と認可の機能が実装されています。非常に簡単に使用できるので是非とも採用したい機能です。

learn.microsoft.com

ただ、これをローカルで試すにはどうすればよいのでしょうか?

幸いにも以下に公式ドキュメントがありますので、Blazor Web Assembly と Azure Functions で構成した Web サービスで試してみたいと思います。

learn.microsoft.com

手順

Blazor Web Assembly と Azure Functions で構成した Web アプリケーションを準備する

以前やった事があるので割愛します。こちらを参照してください。

www.gunshi.info

Azure Static Web Apps CLI のインストール

Azure Static Web Apps をローカルで再現するためのツールです。

learn.microsoft.com

私の場合は、nmp を使ってインストールを行いました。コマンドは以下です。

npm install -g @azure/static-web-apps-cli

Azure Static Web Apps CLI で Web アプリを起動する

手順は以下になります。

  1. Visual Studio で Blazor Web Assembly と Azure Functions をマルチスタートアップで起動する

    方法は以下を参考にしてください。

    www.gunshi.info

  2. コンソールから CLI を立ち上げる

    以下コマンドで起動できます。

    swa start http://localhost:5030 --api-location http://localhost:7071 --verbose

    この時指定する二つのポートですが、最初の 5030 が Blazor Web Assembly のポートで、7071 が Azure Functions のポートとなりますが、Blazor Web Assembly の方は実は https と http で起動していることが手順1.で開くコンソールでわかります。

    このうち、http の方を指定しないとエラーとなりますので注意が必要です。起動が成功すると成功すると、以下のようなメッセージがコンソールに表示されます。

     [swa] - Waiting for http://localhost:7071 to be ready
     [swa] √ http://localhost:7071 validated successfully
     [swa]
     [swa] Using dev server for static content:
     [swa]   http://localhost:5030
     [swa]
     [swa] Using dev server for API:
     [swa]   http://localhost:7071
     [swa]
     [swa] Azure Static Web Apps emulator started at http://localhost:4280. Press CTRL+C to exit.
     [swa]
     [swa]
    

    表示されている http://localhost:4280 にブラウザでアクセスすると、Azure Static Web Apps にデプロイされた風のエミュレータが起動します。

  3. 認証を試してみる。

    ブラウザで、http://localhost:4280/.auth/login/aad にアクセスしてみます。そうすると以下のような画面に遷移します。

    この画面で認証を通すユーザーを作ってそのままログインするイメージです。Login ボタンを押すと、Web アプリケーションに戻ります。ここで、http://localhost:4280/.auth/me にアクセスしてみると、以下のような json を取得できます。

     {"clientPrincipal":{"userId":"1fbf62934cb3d4d0493fdf8025a0c42b","userRoles":["anonymous","authenticated"],"identityProvider":"aad","userDetails":"aaaaaa","claims":[]}}
    

    ログインしたユーザーやロールを識別したりできるわけです。なお、http://localhost:4280/.auth/logout にアクセスするとログアウトとなり、http://localhost:4280/.auth/me にアクセスしても、

     {"clientPrincipal":null}
    

    という返答を受け取ることになります。

まとめ

これでローカル開発環境で Azure Static Web Apps の認証と認可を試すことができるようになります。便利ですね!

実はかつて Blazor Web Assembly の記事を量産していた頃にこの Azure Static Web Apps CLI は試していたはずなのですが、記事にするのをすっかり忘れていたようで、再度一から調べなおすことになってしまいました。いやぁ、やっぱり記事にしてアウトプットしておくというのは非常に大事ですねぇ。みんなも忘れないようにレッツアウトプット!ですよ!