Azure Static Web Appsの認証・認可環境をローカルで構築する
だいたいどのサービスでも認証・認可って利用されると思うんですが、必須にもかかわらず、認証・認可周りって環境を整えるのが面倒だと思うのは自分だけではないはず・・・。
しかし、AzureのStatic Web AppsにはAzure側で認証・認可の機能を提供してくれます(MSサイト)。
これを使わない手はないってことで、意気揚々と実装したんですが、ローカルってどうやんねん?ってことで調査・構築できたので、メモメモ。
環境
バージョンとか
今回は以下の環境で実施しています。
Angular | Node |
---|---|
18.2.7 | 22.9.0 |
コンテナ開発でやっているので、Dockerが入っている方は是非Cloneしてみてください(Github)
SPA
angularでng new
をした状態が前提となります。
swa
のインストール
static-web-apps-cli
というcliが必要とのこと。
しかし、手順の通りにやると
bash: swa: command not found
ってなるので、今回はグローバル(-D
じゃなくて-g
)で入れちゃいます(;´д`)
$ npm install -g @azure/static-web-apps-cli
構築手順
基本的にはMS公式の通りです。
swa init
package.json
と同じ階層で以下のコマンドを実行し、設定を行います
$ swa init
以下のように
? Choose a configuration name > workspace
と設定ファイルの名前を聞かれるので、好きなものを設定し、エンターを押す。
すると、多分package.jsonを読み取ってアプリの構成こんな感じでしょ?って提示があるので、
とりあえずY
Detected configuration for your app:
Framework(s): Angular
App location: .
Output location: dist/sample-auth-static-apps
API location:
API language:
API version:
Data API location:
App build command: npm run build
API build command:
App dev server command: npm start
App dev server URL: http://localhost:4200
API dev server URL:
? Are these settings correct? › (Y/n)
だいたいは上の設定でいいんですが、開発時にnpm run dev
とか設定してあった場合は、swa-cli.config.json
のrun
とかをそのコマンドに書き換えてあげないといけません。
この状態で以下のコマンドを実行するとswa-cli.config.json
のrun
のコマンドが内部的に実行され、ブラウザが立ち上がる状態になるはずです。
$ swa start
もし、実行しても動いてなくね?ってなったら、一度coinfigのrun
に設定してあるコマンドを実行してみてください。
というのも、angularとかだと最初にオートコンプリートの設定とか聞かれるパターンもあるので、run
の実行自体が正常に行われているかどうか確認が必要になります。
正常に完了するとlocalhost:4280
にアクセスしてみると、SPAの画面になるかと思います(今回の環境では下図)。
authの設定をしてみる
azure static web appsのauthはログインのURLが~/.auth/login/xxx
となっており、xxx
は例えばgithub
になります。
試しにhttp://localhost:4280/.auth/login/github
へアクセスすると下図のような画面になるはずです。
ここで例えばUsername
をb0cchi
とかに設定し、Login
ボタンをクリックすることで認証状態になり、以下の画面のように遷移するはずです。
SPAからは~/.auth/me
でユーザー情報が得られるので、ここでは、name
をとっています。
もちろん~/.auth/me
へアクセスすると以下のようになっていることが確認できると思います。
これでローカルにてAzure Static Web Appsのauthの環境が整いました!
最後に
意外とログイン状態とログアウト状態で気にすることが多い昨今。サクッと開発環境を整えて本業をガツガツ進めちゃってください。