кадди авторизация наконец-то заработала

This commit is contained in:
2025-08-27 18:33:52 +03:00
parent a09648ea1f
commit 6335523160
3 changed files with 99 additions and 70 deletions
+45 -61
View File
@@ -1,79 +1,73 @@
{
email dead@cxap.space
dns cloudflare {$CF_API_TOKEN}
acme_dns cloudflare {$CF_API_TOKEN}
order authenticate before respond
order authorize before respond
order authorize before reverse_proxy
servers {
trusted_proxies static private_ranges
}
certificates {
automate auth.realy.nothing.help
automate *.realy.nothing.help
}
}
security {
local identity store localdb {
realm local
path /data/users.json
}
security {
# Локальное хранилище пользователей
local identity store localdb {
realm local
path /data/users.json
}
authentication portal authportal {
crypto default token lifetime {$AUTH_TOKEN_LIFETIME:43200}
enable identity store localdb
# Портал аутентификации (используем в site-блоке ниже)
authentication portal authportal {
# криптополитика и тайминги
crypto default token lifetime {$AUTH_TOKEN_LIFETIME:-12h}
enable identity store localdb
cookie domain realy.nothing.help
cookie lifetime {$AUTH_COOKIE_LIFETIME:43200}
cookie samesite lax
# единый cookie для всех поддоменов realy.nothing.help
cookie domain realy.nothing.help
cookie lifetime {$AUTH_COOKIE_LIFETIME:-12h}
cookie idle_timeout {$AUTH_IDLE_TIMEOUT:-30m}
cookie samesite lax
ui {
links {
"Portainer" "https://port.realy.nothing.help" icon "las la-tachometer-alt"
"WhoAmI" "/whoami" icon "las la-user"
}
}
ui {
title "Account"
# можно добавить ярлыки на часто используемые сервисы
links {
"Portainer" "https://port.realy.nothing.help"
"WhoAmI" "/whoami"
transform user {
match origin local
action add role admin
# require mfa
}
}
# Всем локальным пользователям — роль admin + требование MFA
transform user {
match origin local
action add role admin
# require mfa
}
# И базовая роль "user" всем аутентифицированным
transform user {
action add role user
authorization policy apikey_or_admin {
set auth url https://auth.realy.nothing.help
allow roles admin
with api key auth portal authportal realm local
acl rule {
comment "Accept"
match role admin
allow stop log info
}
acl rule {
comment "Deny"
match any
deny log warn
}
}
}
}
# Политика для API: либо admin-роль, либо API-ключи портала
authorization policy apikey_or_admin {
(auth_forward) {
authorize with apikey_or_admin {
set auth url https://auth.realy.nothing.help
allow roles admin
with api key auth portal authportal realm local
# Явные ACL с логами
acl rule { comment "Accept" match role admin allow stop log info }
acl rule { comment "Deny" match any deny log warn }
inject headers with claims
}
}
auth.realy.nothing.help {
# сам портал на отдельном хосте
route {
authenticate with authportal
}
# Базовые security-заголовки
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
X-Content-Type-Options "nosniff"
@@ -82,16 +76,6 @@ auth.realy.nothing.help {
}
}
# Обычная «пользовательская» защита: просто требует валидную сессию,
# редиректит на портал, прокидывает клеймы в заголовки.
(auth_forward) {
authorize {
set auth url https://auth.realy.nothing.help
inject headers with claims
}
}
# Защита API: только admin или по API-ключу (policy объявлена выше)
(authorize_apikey_or_admin) {
authorize with apikey_or_admin
}
*.realy.nothing.help {
respond / "ok"
}