Cloudflare Pages に Cloudflare Access をつける

ユースケース: 雑につくったアプリを Cloudflare Pages にアップしたが、有象無象にアクセスされたくないので雑に認証をつけたい

毎回微妙に手順を忘れるので書いておく

まず Cloudflare Pages (以下 Pages) に Cloudflare Access (以下 Access) をつけるとき、 Access 側のページからは設定できない。かわりに、 Pages から Manage タブ > Access Policy のとこから "Enable access policy" をクリックして設定をはじめる。

Access 側では、デフォルトのドメイン設定だと preview のページにしかアクセス制限がかからないので、subdomain なしのドメインを追加する。

ここまでやれば、 email x OTP でのアクセス制限はかけられる。なんだけど、Access からメールが来るのにやたら時間がかかるので Google 認証もつけたい。 Google 認証はアプリケーション単位ではなく、 Cloudflare のアカウント単位で設定するもので、 Access の Settings ページからやる。

手順はここ↓ で、 GCP 側に OAuth consent screen と OAuth client をつくる。

consent screen のポイント:

  • user type: External
  • authorized domains: client を作るときに勝手に追加されるので、consent screen を作るときに設定しなくて ok
  • scopes: .../auth/userinfo.email を追加するといいよ、と上の docs に書いてある
  • test users: ... はいらない (これも docs に書いてある)

OAuth client のポイント:

  • type: Web application
  • origin/redirect URI: docs に書いてある & ためしに Cloudflare Access のログイン画面を自分のアプリに行って開けばわかる

ここも参考になった、あざます https://egashira.dev/blog/uses-google-oauth-for-cloudflare-pages#google-cloud-console-%E3%81%A7-oauth-%E5%90%8C%E6%84%8F%E7%94%BB%E9%9D%A2%E3%81%AE%E8%A8%AD%E5%AE%9A

ここまでやったら Cloudflare Access 全体の設定に Google が IdP として追加されたので、最後に Pages の AccessGoogle を追加する。