snapshot of https://github.com/ory/kratos.git (master, 2026-09-15; blobs > 131072B omitted)
Some checks failed
CI / Run tests and lints (push) Failing after 29s
CI / Build CLI docs (push) Has been skipped
CI / Run Playwright end-to-end tests (mysql) (push) Failing after 3s
CI / Run Playwright end-to-end tests (postgres) (push) Failing after 2s
CI / Run Playwright end-to-end tests (sqlite) (push) Failing after 3s
CodeQL / Analyze (go) (push) Failing after 4s
CodeQL / Analyze (javascript) (push) Failing after 3s
Docker Image Scanners / scanners (push) Failing after 4s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Run end-to-end tests (postgres) (push) Failing after 19s
CI / Run end-to-end tests (sqlite) (push) Failing after 2s
CI / Run Playwright end-to-end tests (cockroach) (push) Failing after 2s
CI / Draft newsletter (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
Some checks failed
CI / Run tests and lints (push) Failing after 29s
CI / Build CLI docs (push) Has been skipped
CI / Run Playwright end-to-end tests (mysql) (push) Failing after 3s
CI / Run Playwright end-to-end tests (postgres) (push) Failing after 2s
CI / Run Playwright end-to-end tests (sqlite) (push) Failing after 3s
CodeQL / Analyze (go) (push) Failing after 4s
CodeQL / Analyze (javascript) (push) Failing after 3s
Docker Image Scanners / scanners (push) Failing after 4s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Run end-to-end tests (postgres) (push) Failing after 19s
CI / Run end-to-end tests (sqlite) (push) Failing after 2s
CI / Run Playwright end-to-end tests (cockroach) (push) Failing after 2s
CI / Draft newsletter (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
This commit is contained in:
1
contrib/quickstart/.dockerignore
Normal file
1
contrib/quickstart/.dockerignore
Normal file
@@ -0,0 +1 @@
|
||||
*
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"$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",
|
||||
"title": "E-Mail",
|
||||
"minLength": 3,
|
||||
"ory.sh/kratos": {
|
||||
"credentials": {
|
||||
"password": {
|
||||
"identifier": true
|
||||
},
|
||||
"webauthn": {
|
||||
"identifier": true
|
||||
},
|
||||
"code": {
|
||||
"identifier": true,
|
||||
"via": "email"
|
||||
},
|
||||
"passkey": {
|
||||
"display_name": true
|
||||
}
|
||||
},
|
||||
"verification": {
|
||||
"via": "email"
|
||||
},
|
||||
"recovery": {
|
||||
"via": "email"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"first": {
|
||||
"title": "First Name",
|
||||
"type": "string"
|
||||
},
|
||||
"last": {
|
||||
"title": "Last Name",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["email"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
}
|
||||
120
contrib/quickstart/kratos/all-strategies/kratos.yml
Normal file
120
contrib/quickstart/kratos/all-strategies/kratos.yml
Normal file
@@ -0,0 +1,120 @@
|
||||
version: v0.13.0
|
||||
|
||||
dsn: memory
|
||||
|
||||
serve:
|
||||
public:
|
||||
base_url: http://localhost:4433/
|
||||
cors:
|
||||
enabled: true
|
||||
admin:
|
||||
base_url: http://kratos:4434/
|
||||
|
||||
session:
|
||||
whoami:
|
||||
required_aal: aal1
|
||||
|
||||
selfservice:
|
||||
default_browser_return_url: http://localhost:4455/
|
||||
allowed_return_urls:
|
||||
- http://localhost:4455
|
||||
- http://localhost:19006/Callback
|
||||
- exp://localhost:8081/--/Callback
|
||||
|
||||
methods:
|
||||
password:
|
||||
enabled: true
|
||||
webauthn:
|
||||
enabled: true
|
||||
config:
|
||||
passwordless: true
|
||||
rp:
|
||||
display_name: Your Application name
|
||||
# Set 'id' to the top-level domain.
|
||||
id: localhost
|
||||
# Set 'origin' to the exact URL of the page that prompts the user to use WebAuthn. You must include the scheme, host, and port.
|
||||
origin: http://localhost:4455
|
||||
passkey:
|
||||
enabled: true
|
||||
config:
|
||||
rp:
|
||||
display_name: Your Application name
|
||||
# Set 'id' to the top-level domain.
|
||||
id: localhost
|
||||
# Set 'origin' to the exact URL of the page that prompts the user to use WebAuthn. You must include the scheme, host, and port.
|
||||
origins:
|
||||
- http://localhost:4455
|
||||
|
||||
flows:
|
||||
error:
|
||||
ui_url: http://localhost:4455/error
|
||||
|
||||
settings:
|
||||
ui_url: http://localhost:4455/settings
|
||||
privileged_session_max_age: 15m
|
||||
required_aal: aal1
|
||||
|
||||
recovery:
|
||||
enabled: true
|
||||
ui_url: http://localhost:4455/recovery
|
||||
use: code
|
||||
|
||||
verification:
|
||||
enabled: false
|
||||
ui_url: http://localhost:4455/verification
|
||||
use: code
|
||||
after:
|
||||
default_browser_return_url: http://localhost:4455/
|
||||
|
||||
logout:
|
||||
after:
|
||||
default_browser_return_url: http://localhost:4455/login
|
||||
|
||||
login:
|
||||
ui_url: http://localhost:4455/login
|
||||
lifespan: 10m
|
||||
|
||||
registration:
|
||||
enable_legacy_one_step: false
|
||||
lifespan: 10m
|
||||
ui_url: http://localhost:4455/registration
|
||||
after:
|
||||
passkey:
|
||||
hooks:
|
||||
- hook: session
|
||||
webauthn:
|
||||
hooks:
|
||||
- hook: session
|
||||
password:
|
||||
hooks:
|
||||
- hook: session
|
||||
- hook: show_verification_ui
|
||||
|
||||
log:
|
||||
level: debug
|
||||
format: text
|
||||
leak_sensitive_values: true
|
||||
|
||||
secrets:
|
||||
cookie:
|
||||
- PLEASE-CHANGE-ME-I-AM-VERY-INSECURE
|
||||
cipher:
|
||||
- 32-LONG-SECRET-NOT-SECURE-AT-ALL
|
||||
|
||||
ciphers:
|
||||
algorithm: xchacha20-poly1305
|
||||
|
||||
hashers:
|
||||
algorithm: bcrypt
|
||||
bcrypt:
|
||||
cost: 8
|
||||
|
||||
identity:
|
||||
default_schema_id: default
|
||||
schemas:
|
||||
- id: default
|
||||
url: file://./contrib/quickstart/kratos/all-strategies/identity.schema.json
|
||||
|
||||
courier:
|
||||
smtp:
|
||||
connection_uri: smtps://test:test@mailslurper:1025/?skip_ssl_verify=true
|
||||
17
contrib/quickstart/kratos/cloud/Caddyfile
Normal file
17
contrib/quickstart/kratos/cloud/Caddyfile
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
http_port 4455
|
||||
auto_https off
|
||||
|
||||
}
|
||||
|
||||
:4455 {
|
||||
route /ui/* {
|
||||
uri strip_prefix /ui
|
||||
reverse_proxy kratos-selfservice-ui-node:4438 {
|
||||
header_up Host {http.request.hostport}
|
||||
}
|
||||
}
|
||||
reverse_proxy /* kratos:4433 {
|
||||
header_up Host {http.request.hostport}
|
||||
}
|
||||
}
|
||||
49
contrib/quickstart/kratos/cloud/identity.schema.json
Normal file
49
contrib/quickstart/kratos/cloud/identity.schema.json
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"$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",
|
||||
"title": "E-Mail",
|
||||
"minLength": 3,
|
||||
"ory.sh/kratos": {
|
||||
"credentials": {
|
||||
"password": {
|
||||
"identifier": true
|
||||
}
|
||||
},
|
||||
"verification": {
|
||||
"via": "email"
|
||||
},
|
||||
"recovery": {
|
||||
"via": "email"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"first": {
|
||||
"title": "First Name",
|
||||
"type": "string"
|
||||
},
|
||||
"last": {
|
||||
"title": "Last Name",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"email"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
}
|
||||
76
contrib/quickstart/kratos/cloud/kratos.yml
Normal file
76
contrib/quickstart/kratos/cloud/kratos.yml
Normal file
@@ -0,0 +1,76 @@
|
||||
version: v0.13.0
|
||||
|
||||
dsn: memory
|
||||
|
||||
serve:
|
||||
public:
|
||||
base_url: http://localhost:4455/
|
||||
cors:
|
||||
enabled: true
|
||||
admin:
|
||||
base_url: http://kratos:4434/
|
||||
|
||||
selfservice:
|
||||
default_browser_return_url: http://localhost:4455/ui/welcome
|
||||
allowed_return_urls:
|
||||
- http://localhost:4455
|
||||
|
||||
methods:
|
||||
password:
|
||||
enabled: true
|
||||
|
||||
flows:
|
||||
error:
|
||||
ui_url: http://localhost:4455/ui/error
|
||||
|
||||
settings:
|
||||
ui_url: http://localhost:4455/ui/settings
|
||||
privileged_session_max_age: 15m
|
||||
|
||||
recovery:
|
||||
enabled: true
|
||||
ui_url: http://localhost:4455/ui/recovery
|
||||
|
||||
verification:
|
||||
enabled: true
|
||||
ui_url: http://localhost:4455/ui/verification
|
||||
after:
|
||||
default_browser_return_url: http://localhost:4455/ui/welcome
|
||||
|
||||
logout:
|
||||
after:
|
||||
default_browser_return_url: http://localhost:4455/ui/login
|
||||
|
||||
login:
|
||||
ui_url: http://localhost:4455/ui/login
|
||||
|
||||
registration:
|
||||
ui_url: http://localhost:4455/ui/registration
|
||||
after:
|
||||
password:
|
||||
hooks:
|
||||
-
|
||||
hook: session
|
||||
|
||||
log:
|
||||
level: info
|
||||
format: text
|
||||
|
||||
secrets:
|
||||
cookie:
|
||||
- PLEASE-CHANGE-ME-I-AM-VERY-INSECURE
|
||||
|
||||
hashers:
|
||||
algorithm: bcrypt
|
||||
bcrypt:
|
||||
cost: 8
|
||||
|
||||
identity:
|
||||
default_schema_id: preset://email
|
||||
schemas:
|
||||
- id: preset://email
|
||||
url: file:///etc/config/kratos/identity.schema.json
|
||||
|
||||
courier:
|
||||
smtp:
|
||||
connection_uri: smtps://test:test@mailslurper:1025/?skip_ssl_verify=true
|
||||
42
contrib/quickstart/kratos/cloud/quickstart.yml
Normal file
42
contrib/quickstart/kratos/cloud/quickstart.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
version: '3.7'
|
||||
|
||||
services:
|
||||
kratos:
|
||||
volumes:
|
||||
- type: volume
|
||||
source: kratos-sqlite
|
||||
target: /var/lib/sqlite
|
||||
read_only: false
|
||||
- type: bind
|
||||
source: ./contrib/quickstart/kratos/cloud
|
||||
target: /etc/config/kratos
|
||||
kratos-migrate:
|
||||
volumes:
|
||||
- type: volume
|
||||
source: kratos-sqlite
|
||||
target: /var/lib/sqlite
|
||||
read_only: false
|
||||
- type: bind
|
||||
source: ./contrib/quickstart/kratos/cloud
|
||||
target: /etc/config/kratos
|
||||
|
||||
kratos-selfservice-ui-node:
|
||||
ports:
|
||||
- "4438:4438"
|
||||
environment:
|
||||
- PORT=4438
|
||||
- KRATOS_BROWSER_URL=http://localhost:4455/
|
||||
|
||||
kratos-caddy:
|
||||
image: caddy:2.4.5-alpine
|
||||
ports:
|
||||
- "4455:4455"
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./contrib/quickstart/kratos/cloud/Caddyfile
|
||||
target: /etc/caddy/Caddyfile
|
||||
command: caddy run -watch -config /etc/caddy/Caddyfile
|
||||
restart: on-failure
|
||||
networks:
|
||||
- intranet
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"$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",
|
||||
"title": "E-Mail",
|
||||
"minLength": 3,
|
||||
"ory.sh/kratos": {
|
||||
"credentials": {
|
||||
"password": {
|
||||
"identifier": true
|
||||
}
|
||||
},
|
||||
"verification": {
|
||||
"via": "email"
|
||||
},
|
||||
"recovery": {
|
||||
"via": "email"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"first": {
|
||||
"title": "First Name",
|
||||
"type": "string"
|
||||
},
|
||||
"last": {
|
||||
"title": "Last Name",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"email"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
}
|
||||
102
contrib/quickstart/kratos/email-password/kratos.yml
Normal file
102
contrib/quickstart/kratos/email-password/kratos.yml
Normal file
@@ -0,0 +1,102 @@
|
||||
version: v0.13.0
|
||||
|
||||
dsn: memory
|
||||
|
||||
serve:
|
||||
public:
|
||||
base_url: http://127.0.0.1:4433/
|
||||
cors:
|
||||
enabled: true
|
||||
admin:
|
||||
base_url: http://kratos:4434/
|
||||
|
||||
selfservice:
|
||||
default_browser_return_url: http://127.0.0.1:4455/welcome
|
||||
allowed_return_urls:
|
||||
- http://127.0.0.1:4455
|
||||
- http://localhost:19006/Callback
|
||||
- exp://localhost:8081/--/Callback
|
||||
|
||||
methods:
|
||||
password:
|
||||
enabled: true
|
||||
totp:
|
||||
config:
|
||||
issuer: Kratos
|
||||
enabled: true
|
||||
lookup_secret:
|
||||
enabled: true
|
||||
link:
|
||||
enabled: true
|
||||
code:
|
||||
enabled: true
|
||||
|
||||
flows:
|
||||
error:
|
||||
ui_url: http://127.0.0.1:4455/error
|
||||
|
||||
settings:
|
||||
ui_url: http://127.0.0.1:4455/settings
|
||||
privileged_session_max_age: 15m
|
||||
required_aal: highest_available
|
||||
|
||||
recovery:
|
||||
enabled: true
|
||||
ui_url: http://127.0.0.1:4455/recovery
|
||||
use: code
|
||||
|
||||
verification:
|
||||
enabled: true
|
||||
ui_url: http://127.0.0.1:4455/verification
|
||||
use: code
|
||||
after:
|
||||
default_browser_return_url: http://127.0.0.1:4455/welcome
|
||||
|
||||
logout:
|
||||
after:
|
||||
default_browser_return_url: http://127.0.0.1:4455/login
|
||||
|
||||
login:
|
||||
ui_url: http://127.0.0.1:4455/login
|
||||
lifespan: 10m
|
||||
|
||||
registration:
|
||||
lifespan: 10m
|
||||
ui_url: http://127.0.0.1:4455/registration
|
||||
after:
|
||||
password:
|
||||
hooks:
|
||||
- hook: session
|
||||
- hook: show_verification_ui
|
||||
|
||||
log:
|
||||
level: debug
|
||||
format: text
|
||||
leak_sensitive_values: true
|
||||
|
||||
secrets:
|
||||
cookie:
|
||||
- PLEASE-CHANGE-ME-I-AM-VERY-INSECURE
|
||||
cipher:
|
||||
- 32-LONG-SECRET-NOT-SECURE-AT-ALL
|
||||
|
||||
ciphers:
|
||||
algorithm: xchacha20-poly1305
|
||||
|
||||
hashers:
|
||||
algorithm: bcrypt
|
||||
bcrypt:
|
||||
cost: 8
|
||||
|
||||
identity:
|
||||
default_schema_id: default
|
||||
schemas:
|
||||
- id: default
|
||||
url: file:///etc/config/kratos/identity.schema.json
|
||||
|
||||
courier:
|
||||
smtp:
|
||||
connection_uri: smtps://test:test@mailslurper:1025/?skip_ssl_verify=true
|
||||
|
||||
feature_flags:
|
||||
use_continue_with_transitions: true
|
||||
34
contrib/quickstart/kratos/passkey/identity.schema.json
Normal file
34
contrib/quickstart/kratos/passkey/identity.schema.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"$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",
|
||||
"title": "Your E-Mail",
|
||||
"minLength": 3,
|
||||
"ory.sh/kratos": {
|
||||
"credentials": {
|
||||
"password": {
|
||||
"identifier": true
|
||||
},
|
||||
"webauthn": {
|
||||
"identifier": true
|
||||
},
|
||||
"passkey": {
|
||||
"display_name": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["email"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
}
|
||||
107
contrib/quickstart/kratos/passkey/kratos.yml
Normal file
107
contrib/quickstart/kratos/passkey/kratos.yml
Normal file
@@ -0,0 +1,107 @@
|
||||
serve:
|
||||
public:
|
||||
base_url: http://localhost:4433/
|
||||
cors:
|
||||
enabled: true
|
||||
admin:
|
||||
base_url: http://kratos:4434/
|
||||
|
||||
session:
|
||||
whoami:
|
||||
required_aal: aal1
|
||||
|
||||
selfservice:
|
||||
default_browser_return_url: http://localhost:4455/welcome
|
||||
allowed_return_urls:
|
||||
- http://localhost:4455
|
||||
- http://localhost:19006/Callback
|
||||
- exp://example.com/Callback
|
||||
- https://www.ory.sh/
|
||||
- https://example.org/
|
||||
- https://www.example.org/
|
||||
methods:
|
||||
link:
|
||||
config:
|
||||
lifespan: 1h
|
||||
code:
|
||||
config:
|
||||
lifespan: 1h
|
||||
totp:
|
||||
enabled: true
|
||||
config:
|
||||
issuer: issuer.ory.sh
|
||||
lookup_secret:
|
||||
enabled: true
|
||||
webauthn:
|
||||
enabled: true
|
||||
config:
|
||||
passwordless: true
|
||||
rp:
|
||||
id: localhost
|
||||
origins:
|
||||
- http://localhost:4455
|
||||
display_name: Ory
|
||||
passkey:
|
||||
enabled: true
|
||||
config:
|
||||
rp:
|
||||
id: localhost
|
||||
origins:
|
||||
- http://localhost:4455
|
||||
display_name: Ory
|
||||
flows:
|
||||
settings:
|
||||
ui_url: http://localhost:4455/settings
|
||||
privileged_session_max_age: 5m
|
||||
required_aal: aal1
|
||||
logout:
|
||||
after:
|
||||
default_browser_return_url: http://localhost:4455/login
|
||||
registration:
|
||||
ui_url: http://localhost:4455/registration
|
||||
after:
|
||||
password:
|
||||
hooks:
|
||||
- hook: session
|
||||
webauthn:
|
||||
hooks:
|
||||
- hook: session
|
||||
passkey:
|
||||
hooks:
|
||||
- hook: session
|
||||
login:
|
||||
ui_url: http://localhost:4455/login
|
||||
error:
|
||||
ui_url: http://localhost:4455/error
|
||||
verification:
|
||||
ui_url: http://localhost:4455/verify
|
||||
recovery:
|
||||
ui_url: http://localhost:4455/recovery
|
||||
|
||||
log:
|
||||
level: debug
|
||||
format: text
|
||||
leak_sensitive_values: true
|
||||
|
||||
secrets:
|
||||
cookie:
|
||||
- PLEASE-CHANGE-ME-I-AM-VERY-INSECURE
|
||||
cipher:
|
||||
- 32-LONG-SECRET-NOT-SECURE-AT-ALL
|
||||
|
||||
ciphers:
|
||||
algorithm: xchacha20-poly1305
|
||||
|
||||
hashers:
|
||||
algorithm: bcrypt
|
||||
bcrypt:
|
||||
cost: 8
|
||||
|
||||
identity:
|
||||
schemas:
|
||||
- id: default
|
||||
url: file://contrib/quickstart/kratos/passkey/identity.schema.json
|
||||
|
||||
courier:
|
||||
smtp:
|
||||
connection_uri: smtps://test:test@mailslurper:1025/?skip_ssl_verify=true
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"$id": "https://schemas.ory.sh/presets/kratos/quickstart/phone-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",
|
||||
"title": "E-mail",
|
||||
"minLength": 3,
|
||||
"ory.sh/kratos": {
|
||||
"credentials": {
|
||||
"password": {
|
||||
"identifier": true
|
||||
},
|
||||
"code": {
|
||||
"identifier": true,
|
||||
"via": "email"
|
||||
}
|
||||
},
|
||||
"verification": {
|
||||
"via": "email"
|
||||
}
|
||||
}
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"format": "tel",
|
||||
"title": "Phone number",
|
||||
"minLength": 3,
|
||||
"ory.sh/kratos": {
|
||||
"credentials": {
|
||||
"password": {
|
||||
"identifier": true
|
||||
}
|
||||
},
|
||||
"verification": {
|
||||
"via": "sms"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["email", "phone"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
}
|
||||
114
contrib/quickstart/kratos/phone-password/kratos.yml
Normal file
114
contrib/quickstart/kratos/phone-password/kratos.yml
Normal file
@@ -0,0 +1,114 @@
|
||||
version: v0.13.0
|
||||
|
||||
dsn: memory
|
||||
|
||||
serve:
|
||||
public:
|
||||
base_url: http://127.0.0.1:4433/
|
||||
cors:
|
||||
enabled: true
|
||||
admin:
|
||||
base_url: http://kratos:4434/
|
||||
|
||||
selfservice:
|
||||
default_browser_return_url: http://127.0.0.1:4455/welcome
|
||||
allowed_return_urls:
|
||||
- http://127.0.0.1:4455
|
||||
- http://localhost:19006/Callback
|
||||
- exp://localhost:8081/--/Callback
|
||||
|
||||
methods:
|
||||
password:
|
||||
enabled: true
|
||||
totp:
|
||||
config:
|
||||
issuer: Kratos
|
||||
enabled: true
|
||||
lookup_secret:
|
||||
enabled: true
|
||||
link:
|
||||
enabled: true
|
||||
code:
|
||||
enabled: true
|
||||
|
||||
flows:
|
||||
error:
|
||||
ui_url: http://127.0.0.1:4455/error
|
||||
|
||||
settings:
|
||||
ui_url: http://127.0.0.1:4455/settings
|
||||
privileged_session_max_age: 15m
|
||||
required_aal: highest_available
|
||||
|
||||
recovery:
|
||||
enabled: true
|
||||
ui_url: http://127.0.0.1:4455/recovery
|
||||
use: code
|
||||
|
||||
verification:
|
||||
enabled: true
|
||||
ui_url: http://127.0.0.1:4455/verification
|
||||
use: code
|
||||
after:
|
||||
default_browser_return_url: http://127.0.0.1:4455/welcome
|
||||
|
||||
logout:
|
||||
after:
|
||||
default_browser_return_url: http://127.0.0.1:4455/login
|
||||
|
||||
login:
|
||||
ui_url: http://127.0.0.1:4455/login
|
||||
lifespan: 10m
|
||||
|
||||
registration:
|
||||
lifespan: 10m
|
||||
ui_url: http://127.0.0.1:4455/registration
|
||||
after:
|
||||
password:
|
||||
hooks:
|
||||
- hook: session
|
||||
- hook: show_verification_ui
|
||||
|
||||
log:
|
||||
level: debug
|
||||
format: text
|
||||
leak_sensitive_values: true
|
||||
|
||||
secrets:
|
||||
cookie:
|
||||
- PLEASE-CHANGE-ME-I-AM-VERY-INSECURE
|
||||
cipher:
|
||||
- 32-LONG-SECRET-NOT-SECURE-AT-ALL
|
||||
|
||||
ciphers:
|
||||
algorithm: xchacha20-poly1305
|
||||
|
||||
hashers:
|
||||
algorithm: bcrypt
|
||||
bcrypt:
|
||||
cost: 8
|
||||
|
||||
identity:
|
||||
default_schema_id: default
|
||||
schemas:
|
||||
- id: default
|
||||
url: file:///etc/config/kratos/identity.schema.json
|
||||
|
||||
courier:
|
||||
channels:
|
||||
- id: sms
|
||||
type: http
|
||||
request_config:
|
||||
url: https://api.twilio.com/2010-04-01/Accounts/AXXXXXXXXXXXXXX/Messages.json
|
||||
method: POST
|
||||
body: base64://ZnVuY3Rpb24oY3R4KSB7ClRvOiBjdHguUmVjaXBpZW50LApCb2R5OiBjdHguQm9keSwKfQ==
|
||||
headers:
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
auth:
|
||||
type: basic_auth
|
||||
config:
|
||||
user: AXXXXXXX
|
||||
password: XXXX
|
||||
|
||||
feature_flags:
|
||||
use_continue_with_transitions: true
|
||||
50
contrib/quickstart/kratos/webauthn/identity.schema.json
Normal file
50
contrib/quickstart/kratos/webauthn/identity.schema.json
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"$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",
|
||||
"title": "E-Mail",
|
||||
"minLength": 3,
|
||||
"ory.sh/kratos": {
|
||||
"credentials": {
|
||||
"password": {
|
||||
"identifier": true
|
||||
},
|
||||
"webauthn": {
|
||||
"identifier": true
|
||||
}
|
||||
},
|
||||
"verification": {
|
||||
"via": "email"
|
||||
},
|
||||
"recovery": {
|
||||
"via": "email"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"first": {
|
||||
"title": "First Name",
|
||||
"type": "string"
|
||||
},
|
||||
"last": {
|
||||
"title": "Last Name",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["email"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
}
|
||||
107
contrib/quickstart/kratos/webauthn/kratos.yml
Normal file
107
contrib/quickstart/kratos/webauthn/kratos.yml
Normal file
@@ -0,0 +1,107 @@
|
||||
version: v0.13.0
|
||||
|
||||
dsn: memory
|
||||
|
||||
serve:
|
||||
public:
|
||||
base_url: http://localhost:4433/
|
||||
cors:
|
||||
enabled: true
|
||||
admin:
|
||||
base_url: http://kratos:4434/
|
||||
|
||||
selfservice:
|
||||
default_browser_return_url: http://localhost:4455/welcome
|
||||
allowed_return_urls:
|
||||
- http://localhost:4455
|
||||
|
||||
methods:
|
||||
password:
|
||||
enabled: false
|
||||
totp:
|
||||
config:
|
||||
issuer: Kratos
|
||||
enabled: true
|
||||
lookup_secret:
|
||||
enabled: true
|
||||
link:
|
||||
enabled: true
|
||||
code:
|
||||
enabled: true
|
||||
webauthn:
|
||||
config:
|
||||
passwordless: true
|
||||
rp:
|
||||
display_name: Your Application name
|
||||
# Set 'id' to the top-level domain.
|
||||
id: localhost
|
||||
# Set 'origin' to the exact URL of the page that prompts the user to use WebAuthn. You must include the scheme, host, and port.
|
||||
origin: http://localhost:4455
|
||||
enabled: true
|
||||
|
||||
flows:
|
||||
error:
|
||||
ui_url: http://localhost:4455/error
|
||||
|
||||
settings:
|
||||
ui_url: http://localhost:4455/settings
|
||||
privileged_session_max_age: 15m
|
||||
required_aal: highest_available
|
||||
|
||||
recovery:
|
||||
enabled: true
|
||||
ui_url: http://localhost:4455/recovery
|
||||
use: code
|
||||
|
||||
verification:
|
||||
enabled: true
|
||||
ui_url: http://localhost:4455/verification
|
||||
use: code
|
||||
after:
|
||||
default_browser_return_url: http://localhost:4455/welcome
|
||||
|
||||
logout:
|
||||
after:
|
||||
default_browser_return_url: http://localhost:4455/login
|
||||
|
||||
login:
|
||||
ui_url: http://localhost:4455/login
|
||||
lifespan: 10m
|
||||
|
||||
registration:
|
||||
lifespan: 10m
|
||||
ui_url: http://localhost:4455/registration
|
||||
after:
|
||||
password:
|
||||
hooks:
|
||||
- hook: session
|
||||
- hook: show_verification_ui
|
||||
|
||||
log:
|
||||
level: debug
|
||||
format: text
|
||||
leak_sensitive_values: true
|
||||
|
||||
secrets:
|
||||
cookie:
|
||||
- PLEASE-CHANGE-ME-I-AM-VERY-INSECURE
|
||||
cipher:
|
||||
- 32-LONG-SECRET-NOT-SECURE-AT-ALL
|
||||
|
||||
ciphers:
|
||||
algorithm: xchacha20-poly1305
|
||||
|
||||
hashers:
|
||||
algorithm: bcrypt
|
||||
bcrypt:
|
||||
cost: 8
|
||||
|
||||
identity:
|
||||
default_schema_id: default
|
||||
schemas:
|
||||
- id: default
|
||||
url: file:///etc/config/kratos/identity.schema.json
|
||||
|
||||
courier:
|
||||
smtp:
|
||||
connection_uri: smtps://test:test@mailslurper:1025/?skip_ssl_verify=true
|
||||
60
contrib/quickstart/oathkeeper/access-rules.yml
Normal file
60
contrib/quickstart/oathkeeper/access-rules.yml
Normal file
@@ -0,0 +1,60 @@
|
||||
-
|
||||
id: "ory:kratos:public"
|
||||
upstream:
|
||||
preserve_host: true
|
||||
url: "http://kratos:4433"
|
||||
strip_path: /.ory/kratos/public
|
||||
match:
|
||||
url: "http://127.0.0.1:4455/.ory/kratos/public/<**>"
|
||||
methods:
|
||||
- GET
|
||||
- POST
|
||||
- PUT
|
||||
- DELETE
|
||||
- PATCH
|
||||
authenticators:
|
||||
-
|
||||
handler: noop
|
||||
authorizer:
|
||||
handler: allow
|
||||
mutators:
|
||||
- handler: noop
|
||||
|
||||
-
|
||||
id: "ory:kratos-selfservice-ui-node:anonymous"
|
||||
upstream:
|
||||
preserve_host: true
|
||||
url: "http://kratos-selfservice-ui-node:4435"
|
||||
match:
|
||||
url: "http://127.0.0.1:4455/<{registration,welcome,recovery,verification,login,error,health/{alive,ready},**.css,**.js,**.png,**.svg,**.woff*}>"
|
||||
methods:
|
||||
- GET
|
||||
authenticators:
|
||||
-
|
||||
handler: anonymous
|
||||
authorizer:
|
||||
handler: allow
|
||||
mutators:
|
||||
-
|
||||
handler: noop
|
||||
|
||||
-
|
||||
id: "ory:kratos-selfservice-ui-node:protected"
|
||||
upstream:
|
||||
preserve_host: true
|
||||
url: "http://kratos-selfservice-ui-node:4435"
|
||||
match:
|
||||
url: "http://127.0.0.1:4455/<{sessions,settings}>"
|
||||
methods:
|
||||
- GET
|
||||
authenticators:
|
||||
-
|
||||
handler: cookie_session
|
||||
authorizer:
|
||||
handler: allow
|
||||
mutators:
|
||||
- handler: id_token
|
||||
errors:
|
||||
- handler: redirect
|
||||
config:
|
||||
to: http://127.0.0.1:4455/login
|
||||
18
contrib/quickstart/oathkeeper/id_token.jwks.json
Normal file
18
contrib/quickstart/oathkeeper/id_token.jwks.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"keys": [
|
||||
{
|
||||
"use": "sig",
|
||||
"kty": "RSA",
|
||||
"kid": "a2aa9739-d753-4a0d-87ee-61f101050277",
|
||||
"alg": "RS256",
|
||||
"n": "zpjSl0ySsdk_YC4ZJYYV-cSznWkzndTo0lyvkYmeBkW60YHuHzXaviHqonY_DjFBdnZC0Vs_QTWmBlZvPzTp4Oni-eOetP-Ce3-B8jkGWpKFOjTLw7uwR3b3jm_mFNiz1dV_utWiweqx62Se0SyYaAXrgStU8-3P2Us7_kz5NnBVL1E7aEP40aB7nytLvPhXau-YhFmUfgykAcov0QrnNY0DH0eTcwL19UysvlKx6Uiu6mnbaFE1qx8X2m2xuLpErfiqj6wLCdCYMWdRTHiVsQMtTzSwuPuXfH7J06GTo3I1cEWN8Mb-RJxlosJA_q7hEd43yYisCO-8szX0lgCasw",
|
||||
"e": "AQAB",
|
||||
"d": "x3dfY_rna1UQTmFToBoMn6Edte47irhkra4VSNPwwaeTTvI-oN2TO51td7vo91_xD1nw-0c5FFGi4V2UfRcudBv9LD1rHt_O8EPUh7QtAUeT3_XXgjx1Xxpqu5goMZpkTyGZ-B6JzOY3L8lvWQ_Qeia1EXpvxC-oTOjJnKZeuwIPlcoNKMRU-mIYOnkRFfnUvrDm7N9UZEp3PfI3vhE9AquP1PEvz5KTUYkubsfmupqqR6FmMUm6ulGT7guhBw9A3vxIYbYGKvXLdBvn68mENrEYxXrwmu6ITMh_y208M5rC-hgEHIAIvMu1aVW6jNgyQTunsGST3UyrSbwjI0K9UQ",
|
||||
"p": "77fDvnfHRFEgyi7mh0c6fAdtMEMJ05W8NwTG_D-cSwfWipfTwJJrroWoRwEgdAg5AWGq-MNUzrubTVXoJdC2T4g1o-VRZkKKYoMvav3CvOIMzCBxBs9I_GAKr5NCSk7maksMqiCTMhmkoZ5RPuMYMY_YzxKNAbjBd9qFLfaVAqs",
|
||||
"q": "3KEmPA2XQkf7dvtpY1Xkp1IfMV_UBdmYk7J6dB5BYqzviQWdEFvWaSATJ_7qV1dw0JDZynOgipp8gvoL-RepfjtArhPz41wB3J2xmBYrBr1sJ-x5eqAvMkQk2bd5KTor44e79TRIkmkFYAIdUQ5JdVXPA13S8WUZfb_bAbwaCBk",
|
||||
"dp": "5uyy32AJkNFKchqeLsE6INMSp0RdSftbtfCfM86fZFQno5lA_qjOnO_avJPkTILDT4ZjqoKYxxJJOEXCffNCPPltGvbE5GrDXsUbP8k2-LgWNeoml7XFjIGEqcCFQoohQ1IK4DTDN6cmRh76C0e_Pbdh15D6TydJEIlsdGuu_kM",
|
||||
"dq": "aegFNYCEojFxeTzX6vIZL2RRSt8oJKK-Be__reu0EUzYMtr5-RdMhev6phFMph54LfXKRc9ZOg9MQ4cJ5klAeDKzKpyzTukkj6U20b2aa8LTvxpZec6YuTVSxxu2Ul71IGRQijTNvVIiXWLGddk409Ub6Q7JqkyQfvdwhpWnnUk",
|
||||
"qi": "P68-EwgcRy9ce_PZ75c909cU7dzCiaGcTX1psJiXmQAFBcG0msWfsyHGbllOZG27pKde78ORGJDYDNk1FqTwsogZyCP87EiBmOoqXWnMvKYfJ1DOx7x42LMAGwMD3bgQj9jgRACxFJG4n3NI6uFlFruyl_CLQzwW_rQFHshLK7Q"
|
||||
}
|
||||
]
|
||||
}
|
||||
88
contrib/quickstart/oathkeeper/oathkeeper.yml
Normal file
88
contrib/quickstart/oathkeeper/oathkeeper.yml
Normal file
@@ -0,0 +1,88 @@
|
||||
log:
|
||||
level: debug
|
||||
format: json
|
||||
|
||||
serve:
|
||||
proxy:
|
||||
cors:
|
||||
enabled: true
|
||||
allowed_origins:
|
||||
- "*"
|
||||
allowed_methods:
|
||||
- POST
|
||||
- GET
|
||||
- PUT
|
||||
- PATCH
|
||||
- DELETE
|
||||
allowed_headers:
|
||||
- Authorization
|
||||
- Content-Type
|
||||
exposed_headers:
|
||||
- Content-Type
|
||||
allow_credentials: true
|
||||
debug: true
|
||||
|
||||
errors:
|
||||
fallback:
|
||||
- json
|
||||
|
||||
handlers:
|
||||
redirect:
|
||||
enabled: true
|
||||
config:
|
||||
to: http://127.0.0.1:4455/login
|
||||
when:
|
||||
-
|
||||
error:
|
||||
- unauthorized
|
||||
- forbidden
|
||||
request:
|
||||
header:
|
||||
accept:
|
||||
- text/html
|
||||
json:
|
||||
enabled: true
|
||||
config:
|
||||
verbose: true
|
||||
|
||||
access_rules:
|
||||
matching_strategy: glob
|
||||
repositories:
|
||||
- file:///etc/config/oathkeeper/access-rules.yml
|
||||
|
||||
authenticators:
|
||||
anonymous:
|
||||
enabled: true
|
||||
config:
|
||||
subject: guest
|
||||
|
||||
cookie_session:
|
||||
enabled: true
|
||||
config:
|
||||
check_session_url: http://kratos:4433/sessions/whoami
|
||||
preserve_path: true
|
||||
extra_from: "@this"
|
||||
subject_from: "identity.id"
|
||||
only:
|
||||
- ory_kratos_session
|
||||
|
||||
noop:
|
||||
enabled: true
|
||||
|
||||
authorizers:
|
||||
allow:
|
||||
enabled: true
|
||||
|
||||
mutators:
|
||||
noop:
|
||||
enabled: true
|
||||
|
||||
id_token:
|
||||
enabled: true
|
||||
config:
|
||||
issuer_url: http://127.0.0.1:4455/
|
||||
jwks_url: file:///etc/config/oathkeeper/id_token.jwks.json
|
||||
claims: |
|
||||
{
|
||||
"session": {{ .Extra | toJson }}
|
||||
}
|
||||
Reference in New Issue
Block a user