ダッシュボード上で編集可能になりました(以下に記載の API 操作は不要です)
2022 年 8 月 5 日追記
以前に表示されていた READ ONLY
の表示が消え、ダッシュボード上でも編集可能になりました(以下に記載の API 操作は不要です)
Cloudflare dashboard SSO application
Enterprise のお客様は、Cloudflare ダッシュボードへのログインに SSO を利用することができます。
Cloudflare dashboard SSO application · Cloudflare Zero Trust docs
SSO 有効化後にダッシュボードで確認できる情報
Cloudflare dashboard SSO についてセットアップが完了した場合、「無効 / 有効」を設定から変更できます。
また、ポリシーの内容は以下のように確認できますが、ダッシュボード上では「READ ONLY」と表示され編集ができません。
Instant Auth なしでの SSO ログイン体験
メールアドレスを入力すると、「Log in with SSO」となります。
Instant Auth が無効な場合、IdP を選択する画面が表示されますが、今回は Instant Auth を API から有効化して IdP 選択画面がスキップできるかを確認します。
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
{
"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_identity
をtrue
に指定(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
設定反映をダッシュボードで確認
念のため一度ログアウト・ログインをした後には、以下のような画面が確認できます。
また、自動的に Okta が選択され、Instant Auth が機能することも確認できました。