Eine Organisationsrichtlinie in der Vorschau anzeigen

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

Bewertet ein Kandidatenobjekt für die Einstellungen, ohne es zu speichern. Der Anfragetext entspricht dem von Erstellen oder Ersetzen einer Richtlinie, und der Server prüft ihn mit denselben Regeln und derselben Tarifprüfung. Ein Kandidat, den PUT ablehnen würde, wird hier daher mit demselben Problemcode abgelehnt. Es wird nichts geschrieben: keine Richtlinie, kein Audit-Eintrag und kein Ereignis. Die Anfrage nimmt weder If-Match noch Idempotency-Key entgegen, und die Antwort enthält kein ETag.

Die Antwort zählt die Benutzer, auf die der Kandidat angewendet wird (basis users_in_scope), nicht die Benutzer, die blockiert würden. Eine Ausnahme bildet phishing_resistant (siehe unten). Bedingungen, die nur bei der Anmeldung bekannt sind oder die der Richtliniendienst nicht kennt, werden nicht herausgefiltert. not_evaluated listet sie auf, damit die Zahl nie als mehr gelesen wird, als sie ist.

Art Gezählte Benutzer not_evaluated
authentication_methods Aktive Mitglieder der Organisation credentials
mfa (required_for admins oder all) Aktive Mitglieder der Organisation mfa_enrollment; außerdem admin_scope für admins
phishing_resistant (required_for admins oder all) Aktive Mitglieder der Organisation ohne akzeptierte WebAuthn-Anmeldedaten (basis users_without_webauthn, siehe unten) credential_policy; außerdem admin_scope für admins
sso_enforcement org_context Aktive Mitglieder der Organisation, abzüglich bypass_user_ids federated_sign_in
sso_enforcement verified_domains Aktive Mitglieder plus aktive Benutzer der Umgebung mit einer E-Mail-Adresse auf einer verifizierten Domain dieser Organisation, abzüglich bypass_user_ids federated_sign_in
session Aktive Mitglieder der Organisation keine
ip_allowlist Aktive Mitglieder der Organisation client_ip; außerdem admin_scope für admins

Bei phishing_resistant sind Anzahl und Stichprobe die Benutzer im Geltungsbereich, die sich heute nicht phishing-resistent anmelden können: Benutzer ohne aktive WebAuthn-Anmeldedaten (ein Passkey oder ein Sicherheitsschlüssel mit einem ersten Faktor), die die AAGUID-Allowlist akzeptiert. Die Allowlist ist die des Kandidaten, oder die der Umgebung, wenn die des Kandidaten leer ist. Bei einer Allowlist zählen Anmeldedaten nur, wenn ihr Modell aufgeführt ist und ihre Attestierung verifiziert wurde. Ausstehende, widerrufene und als Klon verdächtigte Anmeldedaten zählen nicht. credential_policy bedeutet, dass die Attestierungsanforderung der Umgebung, die Regel für gerätegebundene Passkeys und der Modellstatus des Authenticators nicht angewendet werden. Die Zahl kann daher niedriger ausfallen als die Anzahl der Benutzer, die blockiert würden. Umfasst der Geltungsbereich mehr als 10.000 Benutzer, fällt die Antwort auf users_in_scope mit passkey_enrollment zurück. Können die Daten der Anmeldedaten nicht gelesen werden, schlägt die Anfrage mit 503 fehl, und es wird keine Zahl zurückgegeben.

required_for none und mode off zählen niemanden. Ein aktives Mitglied ist ein Mitglied, dessen Mitgliedschaft aktiv ist und dessen Benutzer nicht gesperrt ist. Jeder Benutzer wird einmal gezählt. admin_scope bedeutet, dass admins als alle Mitglieder gezählt wird, so wie die Anmeldung es heute anwendet. Die Benutzer einer anderen Organisation oder einer anderen Umgebung werden nie gezählt.

Anfrage

Feld Typ Pflicht Beschreibung
org_id Pfad ja Organisations-ID (org_…).
policy_kind Pfad ja Richtlinienart: authentication_methods, mfa, phishing_resistant, sso_enforcement, session oder ip_allowlist. Jeder andere Wert liefert 404.
settings Objekt ja Das Kandidatenobjekt der Einstellungen dieser Art, mit denselben Feldern wie bei PUT.

Anfragetext:

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

Antwort

200 OK. sample enthält höchstens 20 Benutzer der gezählten Menge, sortiert nach ID, nur mit der Benutzer-ID.

Feld Typ Beschreibung
organization_id string Organisations-ID (org_…).
policy_kind string Die angezeigte Art.
basis string Was affected_count zählt: users_in_scope oder, für phishing_resistant, users_without_webauthn. Es können neue Werte hinzukommen.
affected_count integer Anzahl der Benutzer, die basis zählt.
sample array Höchstens 20 Objekte mit user_id (usr_…).
not_evaluated array Bedingungen, die die Zählung nicht filtert: admin_scope, credentials, mfa_enrollment, passkey_enrollment, federated_sign_in, client_ip, credential_policy. Es können neue Werte hinzukommen.
{
  "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"
  ]
}

Fehler

HTTP Code Wann
400 unknown_field Der Anfragetext enthält ein Feld, das nicht im Schema steht.
403 plan_feature_unavailable Die Art oder die AAGUID-Allowlist erfordert einen höheren Tarif; das Problem enthält feature und required_plan.
404 not_found Die Organisation existiert nicht oder die Art ist unbekannt.
409 domain_not_verified sso_enforcement mit mode verified_domains erfordert eine verifizierte Domain für die Organisation.
409 connection_test_required Das Einschalten von sso_enforcement (von off oder ohne Richtlinie) erfordert eine erfolgreiche Test-Anmeldung der aktuellen Konfiguration bei mindestens einem der connection_ids in den letzten 24 Stunden. Führen Sie einen Verbindungstest (POST /v1/connections/{connection_id}:test) aus und versuchen Sie es erneut.
409 organization_pending_deletion Die Organisation wartet auf die selbstständige Löschung.
422 validation_failed Ein Einstellungsfeld ist unbekannt oder ungültig; errors[] verweist auf /settings/….
422 policy_weaker_than_parent Die Einstellung ist schwächer als die Einstellung der Umgebung; errors[] verweist auf das schwächere Feld.
422 at_least_one_method authentication_methods lässt keine Anmeldemethode übrig.
401 unauthenticated Die Anmeldedaten fehlen, sind ungültig oder widerrufen.
403 insufficient_permissions Die Anmeldedaten haben nicht die erforderliche Berechtigung.
429 rate_limited Das Ratenlimit wurde überschritten; wiederholen Sie die Anfrage nach Ablauf des Zeitraums Retry-After.
503 service_unavailable Eine Abhängigkeit ist vorübergehend nicht verfügbar (bei phishing_resistant auch, wenn die Daten der Anmeldedaten nicht gelesen werden können); wiederholen Sie die Anfrage nach Ablauf des Zeitraums Retry-After.

Beispiel

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"]}}'