📘
Azure Static Web AppsでGitHubのリポジトリ権限で認可しようとして諦めました
はじめに
私はGitHubで管理している開発ドキュメントを、静的サイトジェネレーターでビルドしてAzure Static Web Apps (SWA)でホスティングしています。
認可部分を手動で割り当てしていて負担だったので、リポジトリ権限に基づいて認可すれば便利じゃん!ってことでカスタム認証プロバイダーを作ってたんですが・・・
結論から言うと、プロダクションサイトは対応できたんですが、Pull Request時に動的生成されるステージングサイトではうまく動作しませんでした。悲しい・・・
ダメだった理由
GitHub OAuth Appを使って認証するためには、設定にCallback URLを事前に登録する必要があります。
しかしPR時のステージングサイトは動的に生成されるため、事前にCallback URLを登録することができません。
また、ワイルドカードなどで指定することもできません。
これは次のような理由だそうです。
- PR時のステージングサイトは次のようなドメイン名が動的に割り当てられる
https://salmon-grass-*.azurestaticapps.net/ - Callback URLはDNSのCNAMEレコードを利用しているため、ワイルドカード指定ができない
(参考: Feature Request - Custom Domain for Staging Site #22)
このSWAの仕様が認証時に扱いにくい原因になっているということで、変更の要望が上がっているようです。
IssueはCloseされていないので望みはありますが、Openさらたのは2020年・・・
補足:なんでSWAを使っているのか
PR作成時に自動でステージングサイトを生成してくれるのが便利だからです。
PRの差分と、結果どう見えるかをすぐに確認できるのは、ドキュメントのようなコンテンツを管理する上で非常に有用です。
Discussion