Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Plesk OIDC — Authentik SSO Extension

Extensión Plesk para autenticación Single Sign-On mediante OpenID Connect (OIDC) con Authentik como Identity Provider.
Alternativa gratuita y de código abierto a las extensiones comerciales de OAuth/OIDC para Plesk.


✨ Características

  • 🔐 Flujo Authorization Code + PKCE — El estándar más seguro para autenticación web
  • 🎯 Soporte nativo para Authentik — Configuración simplificada con auto-discovery OIDC
  • 🔑 Múltiples estrategias de mapeo — Por email, claim personalizado o grupos de Authentik
  • 🛡️ Seguro por diseño — Validación JWT, protección CSRF, cifrado de secrets con pm_Crypt
  • ⚙️ Panel de configuración integrado — Administración directamente desde el panel de Plesk
  • 🔄 Login local siempre disponible — El login nativo de Plesk no se deshabilita
  • 🌐 Multi-servidor — Un solo provider en Authentik, múltiples servidores Plesk

📋 Requisitos

Componente Versión mínima
Plesk Obsidian 18.0+
PHP 8.0+
Composer 2.0+
Authentik 2024.x+

🚀 Instalación Rápida

1. Construir la extensión

# Instalar dependencias PHP
composer install --no-dev --optimize-autoloader

# Empaquetar la extensión
./scripts/build.sh

2. Instalar en Plesk

Opción A — Via panel Plesk:

  1. Ir a ExtensionsMy ExtensionsUpload Extension
  2. Subir el archivo dist/ext-oidc-authentik-X.Y.Z.zip

Opción B — Via CLI:

plesk bin extension --install-local /path/to/ext-oidc-authentik-X.Y.Z.zip

Opción C — Deploy automático (multi-servidor):

./scripts/deploy.sh plesk-server.ejemplo.com

3. Configurar en Authentik

Ver la guía detallada en docs/authentik-setup.md.

4. Configurar en Plesk

  1. Ir al panel de Plesk → ExtensionsOIDC Login — Authentik SSO
  2. Rellenar la URL de Authentik, Client ID y Client Secret
  3. Hacer clic en "Probar conexión" para verificar
  4. Activar el plugin

🔄 Flujo de Autenticación

[Login Page de Plesk]
    │
    ▼ Click "Continuar con Authentik"
[sso-init.php] → Genera PKCE → Redirige a Authentik
    │
    ▼ Usuario se autentifica en Authentik
[callback.php] → Valida state/nonce → Intercambia code por tokens
    │
    ▼ Valida JWT → Mapea usuario → Crea sesión Plesk
[Panel de Plesk]

📁 Estructura del Proyecto

PleskOidcAuthentik/
├── extension/              # Código fuente de la extensión Plesk
│   ├── meta.xml            # Descriptor de la extensión
│   ├── plib/               # Lógica PHP
│   │   ├── hooks/          # Hooks de Plesk (login button, events)
│   │   ├── controllers/    # Controladores del panel de admin
│   │   ├── library/        # Librería OIDC core
│   │   ├── scripts/        # Scripts post-install/pre-uninstall
│   │   └── vendor/         # Dependencias Composer (bundled)
│   └── htdocs/
│       ├── public/         # Endpoints públicos (sso-init, callback)
│       ├── css/            # Estilos
│       └── js/             # JavaScript del panel
├── docs/                   # Documentación
├── scripts/                # Scripts de build y deploy
└── composer.json           # Dependencias PHP

📖 Documentación


🛡️ Seguridad

Este plugin implementa las siguientes medidas de seguridad:

  • PKCE (RFC 7636) — Protección contra code interception attacks
  • State parameter — Protección CSRF en el callback
  • Nonce — Prevención de token replay attacks
  • Validación JWT — Verificación de firma con JWKS de Authentik
  • pm_Crypt — Cifrado del client_secret en base de datos
  • Session regenerationsession_regenerate_id(true) tras autenticación

🤝 Contribuir

Las contribuciones son bienvenidas. Por favor:

  1. Fork del repositorio
  2. Crea una rama: git checkout -b feature/mi-funcionalidad
  3. Commit con mensaje descriptivo: git commit -m "feat: añadir soporte para PKCE plain"
  4. Push y abre un Pull Request

📄 Licencia

MIT License — Ver LICENSE para más detalles.


⚠️ Aviso Legal

Esta extensión no está afiliada con Plesk ni con Authentik. Es un proyecto independiente de código abierto. Úsala bajo tu propia responsabilidad en entornos de producción; realiza siempre pruebas exhaustivas antes del despliegue.

About

Free open-source Plesk extension for OIDC Single Sign-On using Authentik as Identity Provider. Authorization Code + PKCE flow, JWT validation, multi-server deploy.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages