вход переехал на доверенный заголовок Authelia вместо собственного OIDC
- пришедшего называет заголовок Remote-User от прокси, и верят ему только с адреса из перечня trusted_proxies; своего входа у сервиса не осталось — ни корня /auth, ни кук, ни срока сессии, ни секрета клиента в конфиге и в базе - учётная запись заводится первым обращением: EnsureUser в пакете хранилища, шаг схемы 202608220001 с колонкой provider_login и снятыми правилами users - cmd/oidcstub заменён на cmd/devtools с подкомандой proxy; заодно закрыт унаследованный DL3066 — пользователь образа назван числом
This commit is contained in:
+31
-44
@@ -60,56 +60,43 @@ object_storage_region = "ru-central1"
|
||||
# Endpoint Object Storage
|
||||
object_storage_endpoint = "https://storage.yandexcloud.net/"
|
||||
|
||||
# Вход через внешнего провайдера OIDC (Authelia).
|
||||
# Без заполненной секции сервис не поднимается: молча выключенный вход оставил бы
|
||||
# API открытым наружу.
|
||||
# Кому сервис верит на входе.
|
||||
#
|
||||
# Своего входа у сервиса нет: кто пришёл, называет обратный прокси заголовком
|
||||
# `Remote-User`, сходив к Authelia. Здесь остаётся один ключ — перечень адресов,
|
||||
# чьему заголовку верить. Пустой перечень роняет старт: он значит «не верить
|
||||
# никому», то есть сервис, поднявшийся никого не узнающим.
|
||||
[auth]
|
||||
# Адрес, куда сервис уводит человека на вход
|
||||
auth_url = "https://auth.example.com/api/oidc/authorization"
|
||||
|
||||
# Адрес, где код обменивается на токен
|
||||
token_url = "https://auth.example.com/api/oidc/token"
|
||||
|
||||
# Адрес, откуда берутся сведения о вошедшем
|
||||
user_info_url = "https://auth.example.com/api/oidc/userinfo"
|
||||
|
||||
# Идентификатор клиента, заведённого у провайдера
|
||||
client_id = "transcriber"
|
||||
|
||||
# Секрет клиента; приходит из выкладки, в git не коммитится
|
||||
client_secret = ""
|
||||
|
||||
# Адрес возврата; тот же, что записан клиенту у провайдера
|
||||
redirect_url = "https://transcriber.example.com/auth/callback"
|
||||
|
||||
# Признак `Secure` у куки сессии. Умолчание true; false только для локального
|
||||
# запуска по http://localhost, где браузер такую куку не сохранит
|
||||
secure_cookie = true
|
||||
# Адреса и подсети, с которых приходит обратный прокси. Сверяется адрес самого
|
||||
# соединения, а не пересылаемый заголовок: пересылаемым распоряжается тот, кто
|
||||
# шлёт запрос.
|
||||
#
|
||||
# **Перечень задаёт адрес прокси, а не весь частный диапазон.** Всякий, кто
|
||||
# дотянулся до сервиса с адреса из этого перечня, называет себя кем угодно и
|
||||
# получает чужой архив; `172.16.0.0/12` означало бы «любой контейнер на хосте»,
|
||||
# включая чужие проекты. На сервере сюда ставят адрес сети, в которой стоит
|
||||
# Caddy, — узкий и свой.
|
||||
trusted_proxies = ["172.20.0.0/24"]
|
||||
|
||||
# Локальный вход без Authelia.
|
||||
#
|
||||
# Провайдер на машине разработчика не поднимается, а ключи боевого на ней лежать
|
||||
# не должны — вместо провайдера идёт заглушка `cmd/oidcstub`. Она отвечает на
|
||||
# `/authorize`, `/token` и `/userinfo` и не сверяет ни секрет клиента, ни
|
||||
# проверочный код PKCE: вход у неё один и заранее известный. Поднимается
|
||||
# отдельным процессом:
|
||||
# Прокси на машине разработчика нет, а браузер заголовков не ставит — значит
|
||||
# приложение локально не открылось бы вовсе. На место контура встаёт подставной
|
||||
# прокси из оснастки: он слушает свой порт, ставит заголовок и переправляет
|
||||
# запрос сервису. Проверок он не делает никаких — ни пароля, ни группы, ни
|
||||
# срока, — и это его назначение, а не упущение.
|
||||
#
|
||||
# go run ./cmd/oidcstub
|
||||
# go run ./cmd/devtools proxy
|
||||
#
|
||||
# Замени секцию `[auth]` выше на эти значения — вход пойдёт настоящим путём,
|
||||
# вплоть до куки сессии и заведённой учётной записи в панели:
|
||||
# Приложение после этого открывают по адресу прокси — http://localhost:9000, —
|
||||
# а не по адресу сервиса: запрос мимо прокси приходит без заголовка и никого не
|
||||
# узнаёт.
|
||||
#
|
||||
# auth_url = "http://localhost:9000/authorize"
|
||||
# token_url = "http://localhost:9000/token"
|
||||
# user_info_url = "http://localhost:9000/userinfo"
|
||||
# client_id = "transcriber"
|
||||
# client_secret = "local"
|
||||
# redirect_url = "http://localhost:8080/auth/callback"
|
||||
# secure_cookie = false
|
||||
# Под него в перечне выше должен стоять петлевой адрес:
|
||||
#
|
||||
# Другое значение `-sub` заводит второго вошедшего: это неизменяемый признак,
|
||||
# по которому обмен ищет учётную запись. Почта переезжает вместе с ним сама —
|
||||
# заглушка выводит её из `-sub`, — и это обязательно: при общей почте второй вход
|
||||
# приходит к первой записи и получает отказ.
|
||||
# trusted_proxies = ["127.0.0.1"]
|
||||
#
|
||||
# go run ./cmd/oidcstub -sub local-2
|
||||
# Второй вошедший получается другим значением `-user`: логин у провайдера и есть
|
||||
# ключ учётной записи.
|
||||
#
|
||||
# go run ./cmd/devtools proxy -user local-2 -name "Второй"
|
||||
|
||||
Reference in New Issue
Block a user