-
Notifications
You must be signed in to change notification settings - Fork 423
feat: added first draft for identity schema selection #2270
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 12 commits
7d4f5af
c1ec310
cb0f7a8
7e65c59
667c640
b6792bc
cf8f00b
8cdc18b
f7bfdec
f29a0f3
3d61727
18b9afd
033f874
815c7f1
b65eacc
492db90
8ee1005
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
--- | ||
id: identity-schema-selection | ||
title: Identity schema selection | ||
--- | ||
|
||
```mdx-code-block | ||
import Tabs from "@theme/Tabs" | ||
import TabItem from "@theme/TabItem" | ||
``` | ||
|
||
# Identity schema selection for self-service registration and login flows | ||
|
||
Ory Kratos now supports selecting an identity schema during registration and login self-service flows by specifying a | ||
query parameter. This gives administrators more control over which schemas are used and allows multi-tenant or multi-profile | ||
setups with distinct identity models. | ||
|
||
|
||
## Overview | ||
|
||
- Users or integrators can choose which schema to use by appending the `identity_schema` query parameter when initiating | ||
registration or login flows. | ||
- Only schemas explicitly marked as selectable via `selfservice_selectable: true` in the configuration will be accepted. | ||
- If no schema is selected, the default schema is used (this is the existing behavior). | ||
|
||
## How to use | ||
|
||
### Registration example | ||
|
||
**Browser flow:** | ||
unatasha8 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
``` | ||
GET /self-service/registration/browser?identity_schema=schema-a | ||
``` | ||
|
||
**API flow:** | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. see above
unatasha8 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
``` | ||
GET /self-service/registration/api?identity_schema=schema-a | ||
``` | ||
|
||
### Login Example | ||
|
||
**Browser flow:** | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. see above
unatasha8 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
``` | ||
GET /self-service/login/browser?identity_schema=schema-a | ||
``` | ||
|
||
**API flow:** | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. see above
unatasha8 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
``` | ||
GET /self-service/login/api?identity_schema=schema-a | ||
``` | ||
|
||
## Configuration | ||
|
||
You must define which schemas are available for self-service selection by using the `selfservice_selectable` flag in your identity | ||
schema configuration. | ||
|
||
### Example configuration | ||
|
||
```yaml | ||
identity: | ||
default_schema_id: default | ||
schemas: | ||
- id: default | ||
url: file://./schemas/default.schema.json | ||
selfservice_selectable: true | ||
|
||
- id: schema-a | ||
url: file://./schemas/schema-a.schema.json | ||
selfservice_selectable: true | ||
|
||
- id: schema-internal | ||
url: file://./schemas/internal.schema.json | ||
selfservice_selectable: false # This one cannot be selected by end users | ||
``` | ||
|
||
Only schemas where `selfservice_selectable: true` will be selectable via the `identity_schema` parameter. | ||
|
||
## Behavior Summary | ||
|
||
- If a schema is listed and marked as selectable, it can be used in registration/login. | ||
- If a schema is not listed or not marked as selectable, it cannot be used via query param. | ||
- If no `identity_schema` is passed, the default schema (`default_schema_id`) is used. | ||
|
||
## Migration notes | ||
|
||
- This feature is non-breaking. Existing flows using the default schema are unaffected. | ||
- You only need to update configuration if you want to expose multiple schemas for selection. | ||
- Schemas used internally can remain non-selectable, for example for admin or machine users. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if you want a "small" headline you can use h5, no bolding please