📘

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