
# Cambia password

`POST /fapi/v1/me/password` · chiamato dall'host di accesso dell'ambiente

Cambia la password dell'utente che ha effettuato l'accesso. Viene verificata la password attuale; la nuova password deve rispettare la policy delle password dell'ambiente, il controllo delle password compromesse e la regola sulla cronologia delle password. In caso di successo, tutte le altre sessioni e i refresh token dell'utente vengono revocati, questa sessione resta attiva e una notifica di sicurezza viene inviata agli indirizzi email dell'utente. Richiede il cookie `__Host-idp_session` dell'utente autenticato. Un'app first-party su un altro origin può invece inviare il proprio access token dell'API front (`Authorization: DPoP <token>` con una prova DPoP; vedi [Access token dell'API front](/docs/api/fapi/front-api-token)).

## Richiesta

Header:

| Header | Obbligatorio | Descrizione |
| --- | --- | --- |
| `Idp-Client` | sì | Identificatore dell'SDK. |
| `Origin` | sì | Deve essere esattamente `https://<sign-in host>`. |

Corpo:

```json
{"current_password": "…", "new_password": "…"}
```

## Risposta

`204 No Content`.

## Errori

| Stato | Codice | Quando |
| --- | --- | --- |
| 401 | `unauthenticated` | Nessun cookie di sessione valido. |
| 401 | `step_up_required` | La sessione non è stata verificata negli ultimi 5 minuti; verifica di nuovo con `max_age=300` nell'header `WWW-Authenticate`. Non viene verificato né conteggiato nulla. |
| 401 | `invalid_credentials` | La password attuale è errata. I tentativi ripetuti bloccano la password allo stesso modo dell'accesso. |
| 403 | `origin_not_allowed` | `Origin` manca o è errato. |
| 422 | `password_policy_violation` | La nuova password non rispetta la policy; `errors[]` elenca ogni regola non rispettata per `/new_password` (`too_short`, `too_long`, `context_term`, `custom_term`, `repeated_chars`, `invalid_text`, `reused`). |
| 422 | `breached_password` | La nuova password compare in una violazione di dati nota. |
| 503 | `temporarily_unavailable` | Il server è occupato; riprova dopo il numero di secondi indicato in `Retry-After`. |

## Esempio

```bash
curl -X POST https://example.keenauth.app/fapi/v1/me/password \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -H "Content-Type: application/json" \
  -d '{"current_password": "…", "new_password": "…"}' \
  -b cookies.txt
```

## Dati personali

Questo endpoint tratta dati personali: credenziali. [Dati personali nelle API di KeenAuth](/docs/policies/personal-data) descrive cosa viene memorizzato, per quanto tempo viene conservato e come viene cancellato. Non inviare in nessun campo categorie particolari di dati personali (salute, dati biometrici, religione, opinioni politiche, orientamento sessuale).
