132 lines
3.0 KiB
YAML
132 lines
3.0 KiB
YAML
serve:
|
|
proxy:
|
|
port: 7200
|
|
trust_forwarded_headers: true
|
|
cors:
|
|
enabled: true
|
|
allowed_origins:
|
|
- "https://account.example.com"
|
|
- "https://auth.example.com"
|
|
- "https://app.example.com"
|
|
- "https://admin.example.com"
|
|
- "https://api.example.com"
|
|
- "http://localhost:5000"
|
|
- "http://localhost:5173"
|
|
- "http://localhost:7200"
|
|
- "https://local.example.com:5173"
|
|
allowed_methods:
|
|
- GET
|
|
- POST
|
|
- PUT
|
|
- PATCH
|
|
- DELETE
|
|
allowed_headers:
|
|
- Authorization
|
|
- Content-Type
|
|
- X-Session-Token
|
|
- Cookie
|
|
- Accept
|
|
exposed_headers:
|
|
- Content-Type
|
|
- Set-Cookie
|
|
allow_credentials: true
|
|
debug: false
|
|
|
|
api:
|
|
port: 7250
|
|
|
|
access_rules:
|
|
matching_strategy: glob
|
|
repositories:
|
|
- file:///etc/oathkeeper/rules/nexus.yml
|
|
- file:///etc/oathkeeper/rules/kratos.yml
|
|
- file:///etc/oathkeeper/rules/django.yml
|
|
|
|
authenticators:
|
|
cookie_session:
|
|
enabled: true
|
|
config:
|
|
check_session_url: http://127.0.0.1:6000/sessions/whoami
|
|
preserve_path: true
|
|
extra_from: "@this"
|
|
subject_from: "identity.id"
|
|
only:
|
|
- ory_kratos_session
|
|
|
|
bearer_token:
|
|
enabled: true
|
|
config:
|
|
check_session_url: http://127.0.0.1:6000/sessions/whoami
|
|
token_from:
|
|
header: Authorization
|
|
preserve_path: true
|
|
extra_from: "@this"
|
|
subject_from: "identity.id"
|
|
|
|
noop:
|
|
enabled: true
|
|
|
|
anonymous:
|
|
enabled: true
|
|
config:
|
|
subject: guest
|
|
|
|
authorizers:
|
|
allow:
|
|
enabled: true
|
|
|
|
deny:
|
|
enabled: true
|
|
|
|
mutators:
|
|
noop:
|
|
enabled: true
|
|
|
|
header:
|
|
enabled: true
|
|
config:
|
|
headers:
|
|
# Security: Shared secret for Django backend
|
|
X-Oathkeeper-Secret: "${OATHKEEPER_SECRET}"
|
|
X-User-ID: "{{ print .Subject }}"
|
|
X-User-Email: "{{ print .Extra.identity.traits.email }}"
|
|
X-User-First-Name: "{{ print .Extra.identity.traits.name.first }}"
|
|
X-User-Last-Name: "{{ print .Extra.identity.traits.name.last }}"
|
|
X-User-Phone: "{{ print .Extra.identity.traits.phone }}"
|
|
X-User-Profile-Type: "{{ print .Extra.identity.traits.profile_type }}"
|
|
# Django uses X-Django-Profile-ID, Rust uses X-Profile-ID
|
|
X-Profile-ID: "{{ with .Extra.identity.metadata_public }}{{ with .django_profile_id }}{{ . }}{{ end }}{{ end }}"
|
|
X-Django-Profile-ID: "{{ with .Extra.identity.metadata_public }}{{ with .django_profile_id }}{{ . }}{{ end }}{{ end }}"
|
|
|
|
cookie:
|
|
enabled: true
|
|
config:
|
|
cookies:
|
|
user_id: "{{ print .Subject }}"
|
|
|
|
errors:
|
|
fallback:
|
|
- json
|
|
handlers:
|
|
json:
|
|
enabled: true
|
|
config:
|
|
verbose: true
|
|
|
|
redirect:
|
|
enabled: true
|
|
config:
|
|
to: https://account.example.com/login
|
|
when:
|
|
- error:
|
|
- unauthorized
|
|
- forbidden
|
|
request:
|
|
header:
|
|
accept:
|
|
- text/html
|
|
|
|
log:
|
|
level: info
|
|
format: text
|