株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

Cloudflare Zero Trust × Okta 連携|OIDC と SAML の設定手順

皆さん、こんにちは!
本記事ではOIDC、SAMLを利用したCloudflareとOktaの連携手順を紹介します。

OktaではOpenID Connect(OIDC)とSAMLに対応しています。Cloudflareでは、IdPがOIDC と SAML の両方に対応している場合、設定の容易さからOIDCを推奨しています。

参考としてSAMLを用いた連携手順も記載していますが、不要な場合は4~5章の項目は読み飛ばしていただいても特に問題ありません。
https://developers.cloudflare.com/cloudflare-one/integrations/identity-providers

※CloudflareはUIの更新が多いため、ボタン配置が多少前後している場合があります。

1. Okta無料アカウントを用意

本記事では Okta の無料プラン「Okta Integrator Free Plan org」を使用します。
※Okta VerifyをAndroid/iPhoneともにスマートフォンにインストールする必要あり

サインアップして、Admin Console 画面に入れていればOKです。(最初のセットアップウィザードはスキップしても問題ありません)

2. Okta側:Cloudflare用のOIDCアプリを作成

2-1. OIDCアプリを作る

Admin Consoleのナビゲーションウィンドウを開きます

アプリケーション」⇒「アプリケーション」を選択

[アプリ統合を作成]をクリック

下記を選択して[次へ]をクリック

設定
サインイン方法 OIDC – OpenID Connect
アプリケーションタイプ Webアプリケーション

下記を選択して[保存]をクリック

<team-name> は Zero Trust ダッシュボードの「設定」⇒「カスタムページ」に表示されるチームドメインの先頭(サブドメイン部分)に置き換えます。

例:チームドメインが example.cloudflareaccess.com の場合、<team-name> は example

設定
アプリ統合名

自分が判別しやすい名前

例:Cloudflare Zero Trust (OIDC)

サインインリダイレクトURI https://<team-name>.cloudflareaccess.com/cdn-cgi/access/callback

 

遷移先のページで下記をメモ帳等にコピーして控えます。(Cloudflare側の設定に必要な値です)

  • クライアントID
  • クライアントシークレット

上記2点の他、Okta アカウント URLが必要なので、確認してこれもメモ帳に控えておきます。

管理画面右上のユーザー名をクリックし、ドロップダウンに自分の okta.com のFQDNが表示されますのでこれをコピーします。

このコピーしたFQDNに https:// を先頭に付けたものがCloudflare側で入力するOkta アカウント URL になります。

2-2. 認証に使うユーザーを割り当てる

作成したアプリの「割り当て」タブを選択し、「割り当て」⇒「ユーザーに割り当て」を選択。

今回は検証用途なので、自分のアカウントに対して「割り当て」を選択し、遷移先の画面で[保存して戻る]をクリック。その後[完了]をクリック

3. Cloudflare Zero Trust 側:Okta(OIDC)を追加

3-1. 認証方法追加画面

Cloudflare ダッシュボードから 「Zero Trust」 を開き、左メニューで、「設定」 → 「認証」 → 「ログイン方法」の[新規追加]をクリック。

Okta」を選択

3-2. Oktaからコピーした値を入力

下記を入力し、下にスクロールし[保存]をクリック

 

Cloudflare 項目 入れる値(Okta側から)
アプリID OktaのクライアントID
クライアントシークレット Oktaのクライアントシークレット
Okta アカウント URL Okta アカウント URL

4. Okta側:Cloudflare用のSAMLアプリを作成

※IdPをOIDCで動作させる場合は不要です

4-1. SAMLアプリを作る

SAML連携に必要な値や基本的な流れはCloudflareの公式ドキュメントにも記載されています。

https://developers.cloudflare.com/cloudflare-one/integrations/identity-providers/okta-saml/

Admin Consoleのナビゲーションウィンドウを開きます

アプリケーション」⇒「アプリケーション」を選択

[アプリ統合を作成]をクリック

SAML 2.0」を選択して[次へ]をクリック

アプリ名に任意の名前を入れて[次へ]をクリック

4-2. SAML設定をCloudflare向けに入れる

Cloudflare公式のOkta SAMLドキュメントを意訳すると、このように説明しています。

Cloudflare Docs

Single sign on URL と Audience URI (SP Entity ID) に、

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

を両方とも入れる。

したがって、SAML 設定では、Single sign-on URL と Audience URI は同じ値を入力します。以下のように入力していきます。

  • Single sign on URL(シングルサインオンURL )
    • https://<team-name>.cloudflareaccess.com/cdn-cgi/access/callback
  • Audience URI (SP Entity ID)(オーディエンスURI(SPエンティティID) )
    • https://<team-name>.cloudflareaccess.com/cdn-cgi/access/callback
  • その下の Attribute Statements属性ステートメント(オプション))を設定
    • Name: email

    • Value: user.email

    • もしグループも使いたい場合はグループ属性ステートメントに以下を入力します。

      • Name: groups
      • Filter: Matches regex + .*(全部のグループを送る)

<team-name> は Zero Trust ダッシュボードの「設定」⇒「カスタムページ」に表示されるチームドメインの先頭(サブドメイン部分)に置き換えます。

例:チームドメインが example.cloudflareaccess.com の場合、<team-name> は example



上記を入力したら画面下までスクロールして[次へ]をクリック

これは当社で作成した社内アプリです」を選択して[終了]をクリック

4-3. 認証に使うユーザーを割り当てる

作成したアプリの「割り当て」タブを選択し、「割り当て」⇒「ユーザーに割り当て」を選択。

今回は検証用途なので自分のアカウントに対して「割り当て」を選択し、遷移先の画面で[保存して戻る]をクリック。その後[完了]をクリック



4-4. Cloudflare側で使うSAML情報を取得

サインオン」タブを開き、画面右側にある[SAML の設定手順を表示]をクリック。



開いたページに表示されている以下の3つをメモ帳等にコピー&ペーストして控えます。

  • Identity Provider Single Sign-On URL
  • Identity Provider Issuer
  • X.509 Certificate

これらはCloudflare Zero Trust側の IdP 設定にそのまま入力します。



5. Cloudflare Zero Trust 側:Oktaを IdP として登録

5-1. IdP追加画面

Cloudflare ダッシュボードから 「Zero Trust」 を開き、左メニューで、「設定」 → 「認証」 → 「ログイン方法」の[新規追加]をクリック。

SAML」を選択

5-2. Oktaからコピーした値を入力

以下を入力して[保存]をクリック

Cloudflare 項目 入れる値(Okta側から)
名前

任意の名前
例:SAML-Okta

シングル サインオン URI Okta のIdentity Provider Single Sign-On URL
IdP エンティティ ID または発行者 URL Okta のIdentity Provider Issuer
署名証明書

Okta のX.509 Certificate

SAML 認証リクエストに署名する オンに設定

 

証明書は「-----BEGIN CERTIFICATE-----」から「-----END CERTIFICATE-----」までをそのままコピー&ペーストします。

 

6. 接続テスト

ここからは実際にWARPクライアントから、SAMLを利用してZero Trustにログインしてみます。

WARP クライアントを開き、[Preferences] を選択します。
※日本語版の場合は[環境設定]を選択します。

左メニューの [Account](アカウント) を選択し、[Cloudflare Zero Trust にログイン]をクリック

チーム名を入力し、[OK]をクリック

チーム名はOIDC、SAML設定時と同じく、Zero Trust ダッシュボードの「設定」⇒「カスタムページ」のチームドメインから確認できます。

サインイン画面がブラウザで表示されるので、先ほど作成した「Okta」もしくは「SAML・SAML-Okta」(名前は例)をクリック。
※ ここに表示される名称は、Cloudflare側で設定したIdP名により異なります。

以下のような画面に遷移すれば連携自体は成功しています。後はユーザー情報が正しく連携出来ているかの確認です。

その後、画面に従ってユーザ名と、パスワード、Okta Verify のワンタイムパスワードを入力します。

ログインに成功するとSuccessページが表示されます。Success ページが表示されていれば、Okta を利用したログインは正常に完了しています。