組織ポリシーのプレビュー

POST /v1/organizations/{org_id}/policies/{policy_kind}:preview · 権限 organizations:write

候補となる設定オブジェクトを、保存せずに評価します。リクエストボディは ポリシーの作成または置き換え と同じで、サーバーは同じルールと同じプランの制限で検証します。そのため、PUT が拒否する候補は、ここでも同じ問題コードで拒否されます。何も書き込まれません。ポリシー、監査エントリ、イベントのいずれも作成されません。リクエストには If-Match も Idempotency-Key も指定せず、レスポンスにも ETag は含まれません。

レスポンスの件数は、候補が適用されるユーザー数(basis users_in_scope)です。ブロックされるユーザー数ではありません。例外は phishing_resistant です(下記参照)。サインイン時にしか分からない条件や、ポリシーサービスが保持していない条件は除外されません。not_evaluated にそれらが一覧されるため、件数を実際より多く読み取ることはありません。

種類 集計されるユーザー not_evaluated
authentication_methods 組織のアクティブなメンバー credentials
mfa (required_for admins または all) 組織のアクティブなメンバー mfa_enrollment。また admin_scope の場合は admins も
phishing_resistant (required_for admins または all) WebAuthn の承認済み認証情報を持たない、組織のアクティブなメンバー(basis users_without_webauthn、下記参照) credential_policy。また admin_scope の場合は admins も
sso_enforcement org_context 組織のアクティブなメンバーから bypass_user_ids を除いたもの federated_sign_in
sso_enforcement verified_domains アクティブなメンバーに、この組織の検証済みドメイン上のメールアドレスを持つ環境のアクティブなユーザーを加え、bypass_user_ids を除いたもの federated_sign_in
session 組織のアクティブなメンバー なし
ip_allowlist 組織のアクティブなメンバー client_ip。また admin_scope の場合は admins も

phishing_resistant の場合、件数とサンプルは、現時点でフィッシング耐性のある方法でサインインできないスコープ内のユーザーです。具体的には、AAGUID 許可リストが受け入れるアクティブな WebAuthn 認証情報(パスキー、または第一要素として使用するセキュリティキー)を持たないユーザーです。許可リストは候補のものを使用し、候補が空の場合は環境のものを使用します。許可リストがある場合、認証情報はそのモデルが記載されており、アテステーションが検証済みの場合にのみ数えられます。保留中、取り消し済み、クローン疑いの認証情報は数えられません。credential_policy は、環境のアテステーション要件、デバイスバウンドのパスキーのルール、認証デバイスのモデルステータスが適用されないことを意味します。そのため、ブロックされるユーザー数より件数が少なくなることがあります。スコープのユーザーが 10,000 人を超える場合、レスポンスは users_in_scope にフォールバックし、passkey_enrollment を返します。認証情報データを読み取れない場合、リクエストは 503 で失敗し、件数は返されません。

required_for none と mode off は誰も数えません。アクティブなメンバーとは、メンバーシップが有効で、ユーザーがブロックされていないメンバーです。各ユーザーは一度だけ数えられます。admin_scope は、admins がすべてのメンバーとして数えられることを意味します。これは、現在サインインでそのように適用されているためです。別の組織や別の環境のユーザーは決して数えられません。

リクエスト

フィールド 型 必須 説明
org_id path はい 組織 ID(org_…)。
policy_kind path はい ポリシーの種類: authentication_methods、mfa、phishing_resistant、sso_enforcement、session または ip_allowlist。ほかの値を指定すると 404 が返されます。
settings object はい 種類ごとの候補設定オブジェクトです。フィールドは PUT と同じです。

リクエストボディ:

{
  "settings": {
    "required_for": "all",
    "allowed_factors": [
      "totp",
      "webauthn"
    ],
    "enrollment_grace_days": 7
  }
}

レスポンス

200 OK。sample には、集計対象のユーザーのうち最大 20 人が ID 順に含まれ、ユーザー ID のみが含まれます。

フィールド 型 説明
organization_id string 組織 ID(org_…)。
policy_kind string プレビューした種類。
basis string affected_count が数えるもの: users_in_scope、または phishing_resistant の場合は users_without_webauthn。新しい値が追加されることがあります。
affected_count integer basis が数えるユーザー数。
sample array 最大 20 件のオブジェクト。user_id(usr_…)を含みます。
not_evaluated array 件数が絞り込まない条件: admin_scope、credentials、mfa_enrollment、passkey_enrollment、federated_sign_in、client_ip、credential_policy。新しい値が追加されることがあります。
{
  "organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "policy_kind": "mfa",
  "basis": "users_in_scope",
  "affected_count": 2,
  "sample": [
    {
      "user_id": "usr_01j9xk3m7q8r2s4t6v8w0y2z4b"
    },
    {
      "user_id": "usr_01j9xk3m7q8r2s4t6v8w0y2z4c"
    }
  ],
  "not_evaluated": [
    "mfa_enrollment"
  ]
}

エラー

HTTP code 発生条件
400 unknown_field 本文にスキーマにないフィールドがあります。
403 plan_feature_unavailable 種類または AAGUID 許可リストに、より上位のプランが必要です。問題には feature と required_plan が含まれます。
404 not_found 組織が存在しないか、種類が不明です。
409 domain_not_verified sso_enforcement を mode verified_domains とともに使用するには、組織に検証済みドメインが必要です。
409 connection_test_required sso_enforcement を有効にする(off から、または未設定から)には、過去 24 時間以内に、connection_ids の少なくとも 1 つで現在の設定によるテストサインインが成功している必要があります。接続テスト(POST /v1/connections/{connection_id}:test)を実行してから、再試行してください。
409 organization_pending_deletion 組織はセルフサービス削除の待機中です。
422 validation_failed 設定フィールドが不明か無効です。errors[] は /settings/… を示します。
422 policy_weaker_than_parent 設定が環境の設定より弱いです。errors[] は弱いフィールドを示します。
422 at_least_one_method authentication_methods によってサインイン方法が残らなくなります。
401 unauthenticated 認証情報がない、無効、または取り消されています。
403 insufficient_permissions 認証情報に必要な権限がありません。
429 rate_limited レート制限を超えました。Retry-After の期間を置いてから再試行してください。
503 service_unavailable 依存サービスが一時的に利用できません(phishing_resistant の場合、認証情報データを読み取れないときも含みます)。Retry-After の期間を置いてから再試行してください。

例

curl -X POST https://api.eu.keenauth.com/v1/organizations/org_01j9xk3m7q8r2s4t6v8w0y2z4a/policies/mfa:preview \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"settings":{"required_for":"all","allowed_factors":["totp","webauthn"]}}'
keenauth organizations policies preview org_01j9xk3m7q8r2s4t6v8w0y2z4a mfa \
  --data '{"settings":{"required_for":"all","allowed_factors":["totp","webauthn"]}}'