Самостоятельная аутентификация в самохостинге: как избавиться от зависимости от 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. Полный переход