Administrative Account Recovery
It is possible to initiate account recovery for identities using the Admin API endpoints.
note
It is possible to generate a link for an account without a recovery address via the admin API, but if the recovery link expires the user won't be able to re-initiate the flow by himself as long as the recovery address has been added.
To create the account recovery link, use:
- curl
- GoLang
- Self-Hosted Ory Kratos
curl --request POST -sL \
--header "Authorization: Bearer ory_pat_xRKLsFEOUFQFVBjd6o3FQDifaLYhabGd" \
--header "Content-Type: application/json" \
--request POST \
--data '{
"expires_in": "12h",
"identity_id": "e01b5f2f-6afc-4194-8578-4cebcf69a4d5"
}' https://playground.projects.oryapis.com/api/kratos/admin/recovery/link
package main
import (
"fmt"
"github.com/ory/client-go/client"
"github.com/ory/client-go/client/admin"
"github.com/ory/client-go/models"
)
func main() {
c := client.New(nil, &client.TransportConfig{
Host: "https://playground.projects.oryapis.com",
BasePath: "/",
Schemes: []string{"http"},
})
res, err := c.Admin.CreateRecoveryLink(admin.NewCreateRecoveryLinkParams().WithBody(admin.CreateRecoveryLinkBody{
IdentityID: models.UUID("the-uuid"),
}))
if err != nil {
// ...
}
fmt.Printf("Use link: %s", *res.Payload.RecoveryLink)
}
Run Ory Kratos easily on your local machine or server with the Ory Cloud Hosted UI and default configuration in Docker:
git clone --depth 1 --branch master https://github.com/ory/kratos.git
cd kratos
git checkout master
git pull -ff
docker-compose -f quickstart.yml \
-f contrib/quickstart/kratos/cloud/quickstart.yml up
Ory Kratos will then be avaiable at 127.0.0.1:4433
(public port) and 127.0.0.1:4434
(admin port).
The response contains a recovery_link
value. This is the link the user should
use to set up his or her credentials to connect to a Social Sign In Provider or
set up a password :
{
"recovery_link": "https://playground.projects.oryapis.com/api/kratos/public/self-service/recovery?flow=81c55cec-76fd-4907-bddf-cc112e835698&token=yM9nAZpPIjwccKh9qHRh8OfywZSRcr6q",
"expires_at": "2022-02-25T03:09:37.60684766Z"
}
The user has only a limited amount of time to update their credentials once they use the recovery link. The time is the privileged session
- Ory Cloud
- Self-Hosted Ory Kratos
Configure the privileged session lifespan at console.ory.sh/projects/current/session.
selfservice:
flows:
settings:
privileged_session_max_age: 30m
If the user fails to set up his / her credentials in time, another recovery link needs to be issued and the user needs to re-do the flow.
It is currently not possible to send the recovery link directly to a user's email, this feature is tracked as #595.
Enable Account Recovery
To enable recovery flows, make the following adjustments to your Ory Kratos configuration:
selfservice:
methods:
link:
enabled: true
config:
# If the link should point to a domain (and path) that differs from the configured public base URL,
# set this value to the base URL you want:
base_url: https://my-example-domain.com
flows:
recovery:
enabled: true
To specify that an identity's trait is a recovery email, use the following Identity Schema:
{
"$id": "https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Person",
"type": "object",
"properties": {
"traits": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"ory.sh/kratos": {
"credentials": {
"password": {
"identifier": true
}
},
+ "recovery": {
+ "via": "email"
+ }
}
}
}
"additionalProperties": false
}
}
}
For more detailed information and general guidelines on these flows, take a look at the Account Recovery and Password Reset section.