1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloudflare ダッシュボードへの SSO ログインを Instant Auth にする

Last updated at Posted at 2022-05-12

ダッシュボード上で編集可能になりました(以下に記載の API 操作は不要です)

2022 年 8 月 5 日追記
以前に表示されていた READ ONLY の表示が消え、ダッシュボード上でも編集可能になりました(以下に記載の API 操作は不要です)
image.png

Cloudflare dashboard SSO application

Enterprise のお客様は、Cloudflare ダッシュボードへのログインに SSO を利用することができます。

Cloudflare dashboard SSO application · Cloudflare Zero Trust docs

Our Plans | Pricing | Cloudflare

image-20220512154930180

SSO 有効化後にダッシュボードで確認できる情報

Cloudflare dashboard SSO についてセットアップが完了した場合、「無効 / 有効」を設定から変更できます。

image-20220512161417690

また、ポリシーの内容は以下のように確認できますが、ダッシュボード上では「READ ONLY」と表示され編集ができません。

image-20220512161639442

image-20220512161310599

Instant Auth なしでの SSO ログイン体験

メールアドレスを入力すると、「Log in with SSO」となります。

image-20220512162122763

Instant Auth が無効な場合、IdP を選択する画面が表示されますが、今回は Instant Auth を API から有効化して IdP 選択画面がスキップできるかを確認します。

image-20220512162301175

API でポリシー設定を確認

ポリシーの設定変更を行うには、API から行う必要があります。

現在の設定情報は、以下のように取得できます。

  export EMAIL='YOUR_EMAIL'
  export APIKEY='YOUR_APIKEY'
  export ACCOUNT_ID='YOUR_ACCOUNT_ID'
curl -sX GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/apps" \
     -H "X-Auth-Email: $EMAIL" \
     -H "X-Auth-Key: $APIKEY" \
     -H "Content-Type: application/json" | jq -r '.result[]|select(.type=="dash_sso")' > dash_sso.json

cat dash_sso.json
dash_sso.json
{
  "id": "b46bb9e4-16bc-4b2a-814b-a0bc2accaa36",
  "uid": "b46bb9e4-16bc-4b2a-814b-a0bc2accaa36",
  "type": "dash_sso",
  "name": "SSO App",
  "aud": "da608eac1f62d93cb6bdf4e4e4cb8b27a004fe19e48fc76a75daa1e4479319aa",
  "created_at": "2021-12-02T14:08:33Z",
  "updated_at": "2021-12-02T14:08:33Z",
  "domain": "<org>.cloudflareaccess.com/cdn-cgi/access/sso/saml/xxx",
  "app_launcher_visible": true,
  "saas_app": {
    "consumer_service_url": "https://dash.cloudflare.com/api/v4/saml/acs",
    "sp_entity_id": "dash.cloudflare.com",
    "public_key": "-----BEGIN CERTIFICATE-----\nxxx\n-----END CERTIFICATE-----\n",
    "idp_entity_id": "https://<org>.cloudflareaccess.com",
    "name_id_format": "id",
    "sso_endpoint": "https://<org>.cloudflareaccess.com/cdn-cgi/access/sso/saml/xxx",
    "updated_at": "2021-12-02T14:08:33Z",
    "created_at": "2021-12-02T14:08:33Z"
  },
  "policies": [
    {
      "created_at": "2021-12-02T14:08:33Z",
      "decision": "allow",
      "exclude": [],
      "id": "bbb629bd-7253-458b-bc61-da6934107945",
      "include": [
        {
          "email_domain": {
            "domain": "example.com"
          }
        }
      ],
      "name": "allow email domain",
      "precedence": 2,
      "require": [],
      "uid": "bbb629bd-7253-458b-bc61-da6934107945",
      "updated_at": "2021-12-02T14:08:33Z"
    }
  ],
  "allowed_idps": [],
  "auto_redirect_to_identity": false,
  "session_duration": "24h"
}

API で IdP の ID を取得

Cloudflare dashboard SSO 用の IdP セットアップが完了していれば、以下のようなリストが取得できます。

curl -sX GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/identity_providers" \
     -H "X-Auth-Email: $EMAIL" \
     -H "X-Auth-Key: $APIKEY" \
     -H "Content-Type: application/json" | jq -r '.result[]| {"id": .id, "type": .type, "name": .name}'
{
  "id": "31bbbc53-5179-4c1c-8f00-36f8a9d9a740",
  "type": "github",
  "name": "GitHub"
}
{
  "id": "3a49d201-ab04-497f-a84a-774ae244c1a1",
  "type": "google",
  "name": "Google"
}
{
  "id": "432a1b04-3cc3-4fab-93d4-86db7de4956e",
  "type": "okta",
  "name": "Okta"
}
{
  "id": "c4d76441-d0f6-4610-94f1-6f0b830c6813",
  "type": "onelogin",
  "name": "OneLogin"
}
{
  "id": "fe62c63b-835c-4d05-b4e4-2990d1b72b50",
  "type": "onetimepin",
  "name": "gatsby-starter-blog - Cloudflare Pages"
}
{
  "id": "bb2432d1-1c35-4cfd-9474-8494e357d059",
  "type": "onetimepin",
  "name": ""
}

API でポリシー設定を変更(Instant Auth 有効化)

SaaS applications · Cloudflare Zero Trust docs
Turn on Instant Auth if you are selecting only one login method for your application, and would like your end users to skip the identity provider selection step.

以下の項目を書き換えます。

  • allowed_idps に先ほどの中から 1 つの IdP の ID を指定
  • auto_redirect_to_identitytrue に指定(Instant Auth)
cat dash_sso.json | jq -r .id | export APP_ID=$(cat)
export IDP_ID='YOUR_IDP_ID' # 今回は Okta 432a1b04-3cc3-4fab-93d4-86db7de4956e

curl -X PUT "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/apps/$APP_ID" \
     -H "X-Auth-Email: $EMAIL" \
     -H "X-Auth-Key: $APIKEY" \
     -H "Content-Type: application/json" \
     --data '{"name":"SSO App","session_duration":"24h","allowed_idps":["'$IDP_ID'"],"auto_redirect_to_identity":true,"app_launcher_visible":true}'

API でポリシー設定を変更(ポリシー削除)

cat dash_sso.json | jq -r .id | export APP_ID=$(cat)
# 該当のポリシーを削除してください
sudo vi dash_sso.json

curl -X PUT "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/apps/$APP_ID" \
     -H "X-Auth-Email: $EMAIL" \
     -H "X-Auth-Key: $APIKEY" \
     -H "Content-Type: application/json" \
     --data @dash_sso.json

設定反映をダッシュボードで確認

念のため一度ログアウト・ログインをした後には、以下のような画面が確認できます。

image-20220512155312954

また、自動的に Okta が選択され、Instant Auth が機能することも確認できました。

image-20220512163121725

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?