Cloudflare Zero TrustとGoogleアカウントを連携する。

Cloudflare Zero TrustとGoogleアカウントを連携する。

Cloudflare Zero Trustのユーザー認証にGoogleアカウントを連携した設定記録です。

2024年4月22日

CloudflareゼロトラストGoogleOAuth

Cloudflare AccessとGoogleアカウントを連携して使いやすく。

先の記事でCloudflare AccessとAzure Entra IDの連携を実装しましたが、あらかじめEntra IDにログインしていれば、アプリケーションの利用時にログインが不要なので、とても使い勝手が良くて満足していました。 ただし、自分以外の人にアプリケーションを公開する場合にEntra IDだと、マイクロソフトのテナント内にユーザを作成して、相手に共有しないといけません。GoogleやFacebookなどのアカウントを活用できれば、アカウント作成の必要がないためより簡単に共有できます。

今回はGoogleアカウントとの連携を行ってみました。手順は例によってCloudflareの公式ページを参考にしています。

Google Cloud Platform側の設定

Googleアカウントとの連携にあたって、法人向けのGoogle Workspaceはいりません。通常のGoogleアカウントで作業できます。また、Cloudflareの公式ページだとGoogle Cloud Platform(GCP)のユーザである必要もないと書いていますが、私はGCPの契約をしてしまっていたので、本当に不要なのかはわかりませんでした。

最初に、GCPのリソース管理ページへ移動します。そしてプロジェクトを作成リンクを押します。

GCPプロジェクトの作成

プロジェクト名をわかりやすいく設定して、作成ボタンを押します。

GCPプロジェクトの作成詳細

新しいプロジェクトが作成されたら、プロジェクトのトップページに移動して、クイックアクセスからAPIとサービスへ移動します。

GCPプロジェクトのAPIとサービス

APIとサービスへ移動したら、さらにメニューから認証情報へ移動し、同意画面を構成を開始します。

GCPプロジェクトの同意画面の構成

メニューはOAuth同意画面へ切り替わりました。User Typeの選択を外部にして、作成ボタンを押します。ちなみに内部の方はGoogle Workspace向けのようです。

GCPプロジェクトの同意画面の構成

OAuth同意画面のウィザードが開始され、まずアプリ名を決めます。ユーザーサポートメールはGCPにログインしているアカウントのアドレスでないといけないため、選択肢からGmailアカウントを選びます。

GCPプロジェクトのOAuth同意画面

デベロッパーの連絡先情報は任意のアドレスで構わないようですが、サポートメール同様にGmailを登録しました。入力したら保存して次へを押します。

GCPプロジェクトのデベロッパーのメールアドレス

ウィザードの2番目、スコープ登録ですが公式ページだと必須ではないようです。ただし、認証するユーザへどのような情報が収集されているか伝えるためにも、登録するのが推奨されているようです。 スコープを追加または削除リンクを押して移動します。

GCPプロジェクトのスコープ追加

スコープの一覧からuserinfo.emailを探してチェックを付けて、この1件のスコープだけを追加します。

GCPプロジェクトのスコープ追加詳細

テストユーザーは必要に応じで追加します。今回は追加なしとしたので、何もせずに保存して次へを押しました。

GCPプロジェクトのテストユーザー

APIとサービスのメニューで認証情報へ移動し、認証情報を作成からOAuthクライアントIDを押します。

GCPプロジェクトの接続情報作成

クライアントIDの作成では、アプリケーションの種類としてウェブアプリケーションを選択します。名前はわかりやすいように決定します。

GCPプロジェクトのOAuthクライアントIDの作成

承認済みのJavaScript生成元へは公式ページを参考にして、次のように入力します。<your-team-name>はZero Trustのチーム名に置き換えてください。

https://<your-team-name>.cloudflareaccess.com

OAuthクライアントID作成のJavaScript生成元

同様に、リダイレクトURLもチーム名を置き換えて入力します。

https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback

OAuthクライアントID作成のリダイレクトURL

作成ボタンを押すとクライアントIDとシークレットが作成されて表示されます。両方ともCloudflareに登録するので、記録して控えておきます。

OAuthクライアントID作成の完了

Cloudflare側の設定

Cloudflareでの設定はAzure Entra IDと同様で、SSettings > Authentication > Login methodsからAdd newボタンを押します。

OAuthクライアントID作成の完了

Identity Provider(IdP)の一覧からGoogleを選びます。

OAuthクライアントID作成の完了

App IDClient secretにGCPのページで生成された値を入力して、Proof Key for Code Exchange(PKCE)も有効にします。

OAuthクライアントIDの登録

以上で、Cloudflare Accessの認証ページにGoogleアカウントでログインするためのボタンが追加されます。

OAuthクライアントIDの登録

まとめ

Azure Entra IDと同じようにとても簡単にGoogleアカウントと連携したシングルサインオンが実現できました。Googleアカウントの普及率はとても高いと思われるので、プライベートな開発で認証を実現したい場合に重宝しそうです。