Самостоятельная аутентификация в самохостинге: как избавиться от зависимости от Google
Полное руководство по самостоятельной аутентификации для вашего homelab. Узнайте, как настроить Keycloak, Authelia и другие решения для полной независимости от Big Tech в управлении пользователями и доступом.
Понимание проблемы выбора самостоятельной аутентификации
Статья рассматривает проблему зависимости от внешних провайдеров аутентификации (Google, GitHub и др.) в самохостинговых решениях. Основные проблемы: зависимость от доступности внешних сервисов, отсутствие контроля над пользовательскими данными, ограничения на кастомизацию, проблемы с соответствием требованиям, риск блокировки аккаунта.
Основные проблемы внешней аутентификации:
1. Зависимость от доступности внешнего сервиса
2. Отсутствие контроля над пользовательскими данными
3. Ограничения на кастомизацию
4. Проблемы с соответствием требованиям
5. Риск блокировки аккаунтаВыбор решения для самостоятельной аутентификации
Статья представляет несколько решений: Keycloak (полнофункциональная платформа), Authelia (решение для многофакторной аутентификации), Dex (OpenID Connect провайдер). Каждое решение имеет свои особенности и подходит для разных сценариев использования.
Рассматриваемые решения:
- Keycloak: платформа управления доступом и идентификацией
- Authelia: решение для двухфакторной аутентификации и единого входа
- Dex: OpenID Connect провайдерУстановка и настройка Keycloak
Приводится пример установки Keycloak через Docker и базовая настройка системы. Keycloak - это мощное решение с поддержкой SAML 2.0 и OpenID Connect, различными источниками данных, двухфакторной аутентификацией и возможностью расширения через плагины.
docker run -d --name keycloak -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:latestНастройка Authelia
Authelia - решение для двухфакторной аутентификации и единого входа с поддержкой TOTP, WebAuthn и U2F. В статье приводится пример конфигурации Authelia для продакшн-использования.
server:
host: 0.0.0.0
port: 9091
log_level: info
authelia:
default_redirection_url: https://yourdomain.com
session:
secret: your_session_secret
expiration: 3600
inactivity: 1800Интеграция с существующими сервисами
Для интеграции собственной системы аутентификации с существующими сервисами рекомендуется использовать обратный прокси. Приводятся примеры конфигураций Nginx с Authelia и Traefik с Keycloak.
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location / {
authelia_forward http://authelia:9091;
proxy_pass http://your-service;
}
}Обеспечение безопасности самостоятельной аутентификации
Рассматриваются лучшие практики для обеспечения безопасности самостоятельной аутентификации: правильное хранение паролей с использованием алгоритмов вроде Argon2, защита от CSRF и XSS, двухфакторная аутентификация, регулярный аудит и мониторинг, резервное копирование и восстановление.
import "golang.org/x/crypto/argon2"
func hashPassword(password string, salt []byte) []byte {
hash := argon2.IDKey([]byte(password), salt, 3, 64*1024, 4, 32)
return hash
}Сравнение подходов и рекомендации по внедрению
Статья сравнивает плюсы и минусы самостоятельной аутентификации с облачной и предлагает гибридные подходы. Рекомендуется поэтапный переход: оценка инфраструктуры, выбор решения, пилотное развертывание, миграция пользователей, постепенная интеграция и полный переход.
Пошаговый переход:
1. Оценка текущей инфраструктуры
2. Выбор решения
3. Пилотное развертывание
4. Миграция пользователей
5. Постепенная интеграция
6. Полный переход