HTTP API закрыт за вход через OIDC у Authelia
- шаг схемы закрывает поверхность, которую хранилище приносит открытой: собственную регистрацию, вход по паролю и одноразовый код — без этого закрытие приёма обходилось двумя запросами - продление сессии выключено, срок семь суток: иначе отзыв доступа у провайдера до сервиса не доходит никогда - файл записи отдаётся вошедшему по токену файла — пересмотр ADR-2026-08-12-file-link-open-but-not-logged
This commit is contained in:
@@ -50,6 +50,13 @@ func main() {
|
||||
logger.Info("Configuration loaded successfully", "config_path", *configPath)
|
||||
}
|
||||
|
||||
// Незаполненный вход роняет старт: подняться с молча выключенным входом
|
||||
// значит остаться открытым наружу, и узнать об этом было бы неоткуда.
|
||||
if err := cfg.Auth.Validate(); err != nil {
|
||||
logger.Error("Unable to start with incomplete login settings", "error", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Загружаем переменные окружения из .env файла
|
||||
if err := godotenv.Load(); err != nil {
|
||||
logger.Warn("Warning: .env file not found, using system environment variables")
|
||||
@@ -172,6 +179,12 @@ func main() {
|
||||
// Наши маршруты живут на роутере хранилища: панель отдаётся тем же портом,
|
||||
// и второму серверу на нём взяться неоткуда.
|
||||
transcribeHandler := httpcontroller.NewTranscribeHandler(jobRepo, transcribeService, logger)
|
||||
authHandler := httpcontroller.NewAuthHandler(storage, httpcontroller.AuthHandlerConfig{
|
||||
AuthURL: cfg.Auth.AuthURL,
|
||||
RedirectURL: cfg.Auth.RedirectURL,
|
||||
ClientID: cfg.Auth.ClientID,
|
||||
SecureCookie: cfg.Auth.SecureCookie,
|
||||
}, logger)
|
||||
|
||||
// Сервер приезжает каналом, а не общей переменной: хук исполняется в
|
||||
// горутине сервера, а читает его горутина остановки, и связи «произошло
|
||||
@@ -207,6 +220,20 @@ func main() {
|
||||
return err
|
||||
})
|
||||
|
||||
// Настройки провайдера приводятся к конфигу при каждом подъёме:
|
||||
// применённый шаг схемы не переписывается, и секрет, положенный
|
||||
// однажды шагом, не пережил бы ротации.
|
||||
if err := pbrepo.ApplyProviderSettings(storage, pbrepo.ProviderSettings{
|
||||
AuthURL: cfg.Auth.AuthURL,
|
||||
TokenURL: cfg.Auth.TokenURL,
|
||||
UserInfoURL: cfg.Auth.UserInfoURL,
|
||||
ClientID: cfg.Auth.ClientID,
|
||||
ClientSecret: cfg.Auth.ClientSecret,
|
||||
}); err != nil {
|
||||
return fmt.Errorf("failed to apply provider settings: %w", err)
|
||||
}
|
||||
|
||||
authHandler.Register(se.Router)
|
||||
transcribeHandler.Register(se.Router)
|
||||
|
||||
se.Router.GET("/health", func(e *core.RequestEvent) error {
|
||||
|
||||
Reference in New Issue
Block a user