Visualizza in anteprima una policy dell'organizzazione

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

Valuta un oggetto di impostazioni candidato senza salvarlo. Il body è lo stesso previsto per creare o sostituire una policy, e il server lo verifica con le stesse regole e con lo stesso controllo del piano, quindi un candidato che PUT rifiuterebbe viene rifiutato qui con lo stesso codice di problema. Non viene scritto nulla: nessuna policy, nessuna voce di audit e nessun evento. La richiesta non accetta If-Match né Idempotency-Key, e la risposta non contiene ETag.

La risposta conta gli utenti a cui si applica il candidato (basis users_in_scope), non gli utenti che verrebbero bloccati, con una sola eccezione: phishing_resistant (vedi sotto). Le condizioni che si conoscono solo al momento dell'accesso, o che il servizio delle policy non possiede, non vengono filtrate; not_evaluated le elenca in modo che il conteggio non venga mai letto come più di quanto sia.

Tipo Utenti conteggiati not_evaluated
authentication_methods Membri attivi dell'organizzazione credentials
mfa (required_for admins o all) Membri attivi dell'organizzazione mfa_enrollment; anche admin_scope per admins
phishing_resistant (required_for admins o all) Membri attivi dell'organizzazione senza una credenziale WebAuthn accettata (basis users_without_webauthn, vedi sotto) credential_policy; anche admin_scope per admins
sso_enforcement org_context Membri attivi dell'organizzazione, meno bypass_user_ids federated_sign_in
sso_enforcement verified_domains Membri attivi, più gli utenti attivi dell'ambiente con un indirizzo email su un dominio verificato di questa organizzazione, meno bypass_user_ids federated_sign_in
session Membri attivi dell'organizzazione nessuno
ip_allowlist Membri attivi dell'organizzazione client_ip; anche admin_scope per admins

Per phishing_resistant, il conteggio e il campione sono gli utenti nell'ambito che oggi non possono accedere in modo resistente al phishing: utenti senza una credenziale WebAuthn attiva (una passkey, oppure una chiave di sicurezza usata come primo fattore) che l'allowlist di AAGUID accetta. L'allowlist è quella del candidato, oppure quella dell'ambiente quando quella del candidato è vuota; con un'allowlist, una credenziale conta solo se il suo modello è elencato e la sua attestazione è stata verificata. Le credenziali in attesa, revocate o sospettate di clonazione non vengono contate. credential_policy significa che il requisito di attestazione dell'ambiente, la regola della passkey legata al dispositivo e lo stato del modello di autenticatore non vengono applicati, quindi il conteggio può essere inferiore al numero di utenti che verrebbero bloccati. Quando l'ambito contiene più di 10.000 utenti, la risposta ricorre a users_in_scope con passkey_enrollment. Se i dati delle credenziali non possono essere letti, la richiesta fallisce con 503 e non viene restituito alcun conteggio.

required_for none e mode off non contano nessuno. Un membro attivo è un membro la cui membership è attiva e il cui utente non è bloccato; ogni utente viene contato una sola volta. admin_scope significa che admins viene contato come tutti i membri, che è il modo in cui l'accesso lo applica oggi. Gli utenti di un'altra organizzazione o di un altro ambiente non vengono mai contati.

Richiesta

Campo Tipo Obbligatorio Descrizione
org_id path sì ID dell'organizzazione (org_…).
policy_kind path sì Tipo di policy: authentication_methods, mfa, phishing_resistant, sso_enforcement, session o ip_allowlist. Qualsiasi altro valore restituisce 404.
settings object sì L'oggetto di impostazioni candidato del tipo, con gli stessi campi previsti per PUT.

Body della richiesta:

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

Risposta

200 OK. sample contiene al massimo 20 utenti dell'insieme conteggiato, ordinati per ID, con solo l'ID utente.

Campo Tipo Descrizione
organization_id string ID dell'organizzazione (org_…).
policy_kind string Il tipo di cui è stata visualizzata l'anteprima.
basis string Ciò che affected_count conta: users_in_scope oppure, per phishing_resistant, users_without_webauthn. Potrebbero essere aggiunti nuovi valori.
affected_count integer Numero di utenti che basis conta.
sample array Al massimo 20 oggetti con user_id (usr_…).
not_evaluated array Condizioni che il conteggio non filtra: admin_scope, credentials, mfa_enrollment, passkey_enrollment, federated_sign_in, client_ip, credential_policy. Potrebbero essere aggiunti nuovi valori.
{
  "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"
  ]
}

Errori

HTTP code Quando
400 unknown_field Il body contiene un campo che non è nello schema.
403 plan_feature_unavailable Il tipo o l'allowlist di AAGUID richiede un piano superiore; il problema riporta feature e required_plan.
404 not_found L'organizzazione non esiste oppure il tipo è sconosciuto.
409 domain_not_verified sso_enforcement con mode verified_domains richiede un dominio verificato sull'organizzazione.
409 connection_test_required Attivare sso_enforcement (da off oppure da nessuna policy) richiede un test di accesso riuscito della configurazione attuale di almeno uno dei connection_ids nelle ultime 24 ore. Esegui un test di connessione (POST /v1/connections/{connection_id}:test) e riprova.
409 organization_pending_deletion L'organizzazione è in attesa di eliminazione self-service.
422 validation_failed Un campo di impostazioni è sconosciuto o non valido; errors[] punta a /settings/….
422 policy_weaker_than_parent L'impostazione è più debole di quella dell'ambiente; errors[] punta al campo più debole.
422 at_least_one_method authentication_methods non lascia alcun metodo di accesso.
401 unauthenticated La credenziale manca, non è valida o è stata revocata.
403 insufficient_permissions La credenziale non ha l'autorizzazione richiesta.
429 rate_limited È stato superato il limite di richieste; riprova dopo il periodo Retry-After.
503 service_unavailable Una dipendenza non è temporaneamente disponibile (per phishing_resistant, anche quando i dati delle credenziali non possono essere letti); riprova dopo il periodo Retry-After.

Esempio

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