PHPackages                             johnriveragonzalez/saml2-okta - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. johnriveragonzalez/saml2-okta

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

johnriveragonzalez/saml2-okta
=============================

Complete SAML2 authentication plugin for Filament with Okta and other providers

v1.2.0(7mo ago)029MITPHPPHP ^8.1

Since Oct 7Pushed 7mo agoCompare

[ Source](https://github.com/Johnrivera7/filamentSaml2Okta)[ Packagist](https://packagist.org/packages/johnriveragonzalez/saml2-okta)[ Docs](https://github.com/Johnrivera7/filamentSaml2Okta)[ RSS](/packages/johnriveragonzalez-saml2-okta/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (7)Versions (21)Used By (0)

Filament SAML2 Okta Plugin
==========================

[](#filament-saml2-okta-plugin)

 [![Filament SAML2 Plugin](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/logo%20header%20principal%20plugin.png)](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/logo%20header%20principal%20plugin.png)

Un plugin completo para Laravel Filament que proporciona autenticación SAML2 con Okta y otros proveedores de identidad.

🚀 Características
-----------------

[](#-características)

- ✅ **Autenticación SAML2 completa** con Okta y otros proveedores
- ✅ **Interfaz de administración** integrada en Filament
- ✅ **Generación automática de certificados** SAML2
- ✅ **Modo debug** con logging detallado
- ✅ **Mapeador visual de campos** SAML a User
- ✅ **Botón de login dinámico** con iconos personalizados
- ✅ **Iconos de proveedores** (Okta, Microsoft, Google, Auth0)
- ✅ **Soporte para Heroicons** y SVG personalizados
- ✅ **Configuración desde base de datos** (no archivos .env)
- ✅ **Instalación completamente automática**
- ✅ **Soporte multiidioma** (Inglés y Español)
- ✅ **Cumple normas de plugins de Filament**

📋 Requisitos
------------

[](#-requisitos)

- Laravel 10+
- Filament 3.x
- PHP 8.1+

🛠️ Instalación
--------------

[](#️-instalación)

### Instalación en Desarrollo

[](#instalación-en-desarrollo)

#### 1. Instalar el plugin

[](#1-instalar-el-plugin)

```
composer require johnriveragonzalez/saml2-okta
```

#### 2. Publicar y ejecutar migraciones

[](#2-publicar-y-ejecutar-migraciones)

```
php artisan vendor:publish --tag="saml2-okta-migrations"
php artisan migrate
```

#### 3. Registrar el plugin en Filament

[](#3-registrar-el-plugin-en-filament)

Agregar en `app/Providers/Filament/AdminPanelProvider.php`:

```
use JohnRiveraGonzalez\Saml2Okta\Saml2OktaPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            // ... otros plugins
            Saml2OktaPlugin::make(),
        ]);
}
```

#### 4. Ejecutar comandos de instalación

[](#4-ejecutar-comandos-de-instalación)

```
php artisan saml2-okta:install
```

Este comando ejecutará automáticamente:

- ✅ Extensión del modelo User
- ✅ Extensión del UserResource
- ✅ Registro de middleware
- ✅ Configuración inicial

#### 5. Publicar traducciones (opcional)

[](#5-publicar-traducciones-opcional)

```
php artisan vendor:publish --tag="saml2-okta-translations"
```

#### 6. Publicar configuración (opcional)

[](#6-publicar-configuración-opcional)

```
php artisan vendor:publish --tag="saml2-okta-config"
```

---

### 🚀 Instalación en Producción

[](#-instalación-en-producción)

#### Opción 1: Instalación Automática (Recomendada)

[](#opción-1-instalación-automática-recomendada)

```
# 1. Instalar el plugin
composer require johnriveragonzalez/saml2-okta --no-dev --optimize-autoloader

# 2. Publicar y ejecutar migraciones
php artisan vendor:publish --tag="saml2-okta-migrations"
php artisan migrate --force

# 3. Ejecutar instalación automática
php artisan saml2-okta:install

# 4. Optimizar aplicación
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize
```

#### Opción 2: Instalación Manual Paso a Paso

[](#opción-2-instalación-manual-paso-a-paso)

```
# 1. Instalar dependencias
composer require johnriveragonzalez/saml2-okta --no-dev --optimize-autoloader

# 2. Publicar migraciones
php artisan vendor:publish --tag="saml2-okta-migrations"

# 3. Ejecutar migraciones
php artisan migrate --force

# 4. Extender modelo User
php artisan saml2-okta:extend-user-model

# 5. Extender UserResource
php artisan saml2-okta:extend-user-resource

# 6. Registrar plugin en AdminPanelProvider.php (ver paso 3 arriba)

# 7. Optimizar aplicación
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize
```

#### ⚠️ Consideraciones Importantes para Producción

[](#️-consideraciones-importantes-para-producción)

1. **Permisos de Archivos:**

    ```
    # Asegurar que storage y cache sean escribibles
    chmod -R 775 storage bootstrap/cache
    chown -R www-data:www-data storage bootstrap/cache
    ```
2. **Variables de Entorno:**

    - Asegúrate de tener `APP_ENV=production` en tu archivo `.env`
    - Configura `APP_DEBUG=false`
    - Usa `APP_URL` con tu dominio real (HTTPS)
3. **HTTPS Obligatorio:**

    - SAML2 requiere HTTPS en producción
    - Configura SSL/TLS en tu servidor web
    - El callback URL debe usar `https://`
4. **Optimización:**

    ```
    # Después de cualquier cambio en producción, ejecutar:
    php artisan optimize:clear
    php artisan optimize
    ```
5. **Base de Datos:**

    - Usa conexión segura a la base de datos
    - Realiza backup antes de ejecutar migraciones
    - Verifica que la tabla `saml2_okta_configs` se haya creado correctamente
6. **Logs y Debug:**

    - En producción, desactiva el modo debug del plugin después de configurar
    - Los logs se guardan en `storage/logs/saml2-debug-YYYY-MM-DD.log`
    - Configura rotación de logs para evitar llenar el disco

#### 🔒 Post-Instalación en Producción

[](#-post-instalación-en-producción)

1. **Configurar Okta/Proveedor SAML2:**

    - Accede a `/admin/saml2-settings`
    - Configura los datos de tu proveedor de identidad
    - Genera los certificados SAML2
    - Descarga el certificado SP para subirlo a Okta
2. **Verificar Callback URL:**

    - Debe ser: `https://tu-dominio.com/saml2/callback`
    - Configúralo en tu proveedor SAML2 (Okta, Azure AD, etc.)
3. **Probar la Autenticación:**

    - Usa el modo debug temporalmente para verificar
    - Prueba el flujo completo de login
    - Verifica que los usuarios se creen/actualicen correctamente
    - Desactiva el modo debug después de probar
4. **Configurar Roles y Permisos:**

    - Define el rol por defecto para nuevos usuarios
    - Configura el mapeo de campos SAML
    - Verifica que los usuarios tengan los permisos correctos

#### 📊 Monitoreo en Producción

[](#-monitoreo-en-producción)

```
# Ver logs en tiempo real
tail -f storage/logs/laravel.log
tail -f storage/logs/saml2-debug-*.log

# Verificar estado de la configuración
php artisan tinker
>>> \JohnRiveraGonzalez\Saml2Okta\Models\Saml2OktaConfig::where('is_active', true)->first()
```

⚙️ Configuración
----------------

[](#️-configuración)

### 1. Acceder a la configuración

[](#1-acceder-a-la-configuración)

Una vez instalado, ve a **SAML2 &gt; Configuración SAML2** en el panel de Filament.

 [![Configuración Principal SAML2](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/config%20usuarios%20debug%20certificados.png)](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/config%20usuarios%20debug%20certificados.png)

### 2. Configurar Okta

[](#2-configurar-okta)

#### **Configuración Básica y del Proveedor de Identidad:**

[](#configuración-básica-y-del-proveedor-de-identidad)

 [![Configuración de Okta](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/config%20basica%20y%20proveedor%20de%20identidad%20.png)](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/config%20basica%20y%20proveedor%20de%20identidad%20.png)

1. **Configuración de Okta:**
    - `Client ID`: ID de tu aplicación en Okta
    - `Client Secret`: Secreto de tu aplicación
    - `IDP Entity ID`: Entity ID de Okta
    - `IDP SSO URL`: URL de SSO de Okta
    - `IDP X.509 Certificate`: Certificado de Okta

#### **Configuración del Proveedor de Servicio:**

[](#configuración-del-proveedor-de-servicio)

 [![Configuración del Proveedor de Servicio](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/config%20del%20proveedor%20de%20servicio.png)](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/config%20del%20proveedor%20de%20servicio.png)

2. **Configuración de la aplicación:**
    - `SP Entity ID`: Se genera automáticamente
    - `Callback URL`: Se genera automáticamente
    - `SP X.509 Certificate`: Se genera automáticamente
    - `SP Private Key`: Se genera automáticamente

### 3. Configurar usuarios

[](#3-configurar-usuarios)

 [![Configuración de Usuarios](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/config%20usuarios%20debug%20certificados.png)](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/config%20usuarios%20debug%20certificados.png)

- **Auto crear usuarios**: Crear usuarios automáticamente al hacer login
- **Auto actualizar usuarios**: Actualizar datos de usuarios existentes
- **Marcar como externos**: Marcar usuarios SAML2 como externos
- **Rol por defecto**: Rol asignado a nuevos usuarios

### 4. Configurar interfaz

[](#4-configurar-interfaz)

 [![Configuración de la Interfaz](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/config%20mapeo%20de%20campos.png)](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/config%20mapeo%20de%20campos.png)

- **Activar autenticación SAML2**: Habilitar/deshabilitar el botón de login
- **Etiqueta del botón**: Texto del botón (ej: "Iniciar sesión con Okta")
- **Icono del botón**: Seleccionar icono de proveedor o Heroicon

#### **Iconos de Proveedores Disponibles:**

[](#iconos-de-proveedores-disponibles)

- **Okta** - Icono oficial de Okta
- **Microsoft** - Icono oficial de Microsoft
- **Google** - Icono oficial de Google
- **Auth0** - Icono oficial de Auth0

#### **Heroicons Disponibles:**

[](#heroicons-disponibles)

- **Shield Check** - `heroicon-o-shield-check`
- **Lock Closed** - `heroicon-o-lock-closed`
- **Key** - `heroicon-o-key`
- **Rocket Launch** - `heroicon-o-rocket-launch`
- **User** - `heroicon-o-user`
- **Login** - `heroicon-o-login`
- **Identification** - `heroicon-o-identification`
- **Finger Print** - `heroicon-o-finger-print`

🔧 Funcionalidades
-----------------

[](#-funcionalidades)

### Gestión de Certificados

[](#gestión-de-certificados)

- **Generar certificados**: Crear certificados SAML2 automáticamente
- **Regenerar certificados**: Crear nuevos certificados
- **Ver metadatos**: Acceder a la URL de metadatos SAML2
- **Descargar certificados**: Exportar certificados para Okta

### Modo Debug

[](#modo-debug)

 [![Debug y Logs SAML2](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/pagina%20debug%20ver%20logs.png)](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/pagina%20debug%20ver%20logs.png)

- **Activar debug**: Habilitar logging detallado
- **Ver logs**: Revisar logs de autenticación SAML2
- **Analizar campos**: Ver qué campos envía Okta

### Mapeador de Campos

[](#mapeador-de-campos)

 [![Mapeador de Campos SAML2](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/config%20mapeo%20de%20campos.png)](https://raw.githubusercontent.com/Johnrivera7/filamentSaml2Okta/master/docs/config%20mapeo%20de%20campos.png)

- **Mapeo visual**: Configurar qué campos SAML van a qué campos User
- **Datos reales**: Ver datos reales de Okta para configurar mapeos
- **Transformaciones**: Aplicar transformaciones a los datos

🌐 Proveedores Compatibles
-------------------------

[](#-proveedores-compatibles)

Este plugin funciona con cualquier proveedor SAML2, incluyendo:

### **Proveedores Principales (con iconos personalizados):**

[](#proveedores-principales-con-iconos-personalizados)

- ✅ **Okta** - Icono oficial incluido
- ✅ **Microsoft / Azure AD** - Icono oficial incluido
- ✅ **Google Workspace** - Icono oficial incluido
- ✅ **Auth0** - Icono oficial incluido

### **Otros Proveedores SAML2:**

[](#otros-proveedores-saml2)

- ✅ **OneLogin** - Compatible (usa Heroicons)
- ✅ **Ping Identity** - Compatible (usa Heroicons)
- ✅ **Shibboleth** - Compatible (usa Heroicons)
- ✅ **ADFS (Active Directory Federation Services)** - Compatible (usa Heroicons)
- ✅ **Cualquier proveedor SAML2 estándar** - Compatible (usa Heroicons)

### **Nota sobre Auth0:**

[](#nota-sobre-auth0)

Auth0 es principalmente un proveedor OAuth/OIDC, pero también soporta SAML2. Si usas Auth0 con SAML2, el plugin funcionará perfectamente y tendrás el icono oficial de Auth0 disponible.

📁 Estructura del Plugin
-----------------------

[](#-estructura-del-plugin)

```
packages/johnriveragonzalez/saml2-okta/
├── src/
│   ├── Commands/           # Comandos Artisan
│   ├── Controllers/        # Controladores SAML2
│   ├── Models/            # Modelos de datos
│   ├── Pages/             # Páginas de Filament
│   ├── Services/          # Servicios de negocio
│   └── Saml2OktaPlugin.php # Plugin principal
├── database/migrations/    # Migraciones
├── resources/views/       # Vistas Blade
└── routes/               # Rutas web

```

🌐 Multiidioma
-------------

[](#-multiidioma)

El plugin incluye soporte para múltiples idiomas:

- **Inglés** (en) - Idioma por defecto
- **Español** (es) - Traducción completa

### Cambiar idioma

[](#cambiar-idioma)

1. **Publicar traducciones:**

    ```
    php artisan vendor:publish --tag="saml2-okta-translations"
    ```
2. **Configurar idioma en Laravel:**

    ```
    // config/app.php
    'locale' => 'es', // Para español
    ```
3. **Personalizar traducciones:**Edita los archivos en `lang/vendor/saml2-okta/`

🔄 Comandos Disponibles
----------------------

[](#-comandos-disponibles)

```
# Instalación completa (recomendado)
php artisan saml2-okta:install

# Extender modelo User (se ejecuta automáticamente con install)
php artisan saml2-okta:extend-user-model

# Extender UserResource (se ejecuta automáticamente con install)
php artisan saml2-okta:extend-user-resource

# Limpiar middleware obsoleto (solo si actualizas desde versión antigua)
php artisan saml2-okta:unregister-middleware
```

🚨 Notas Importantes
-------------------

[](#-notas-importantes)

- **El plugin es completamente automático** - No requiere cambios manuales en archivos
- **Configuración en base de datos** - No usa archivos .env para configuración SAML2
- **Extensión automática** - Extiende User model y UserResource automáticamente
- **Inyección automática del botón** - Usa Filament Render Hooks (no requiere middleware)
- **Sin modificaciones al Kernel.php** - No necesitas registrar middleware manualmente

### ⚠️ Si actualizas desde una versión anterior:

[](#️-si-actualizas-desde-una-versión-anterior)

Si instalaste una versión anterior del plugin que usaba middleware, ejecuta:

```
php artisan saml2-okta:unregister-middleware
php artisan config:clear
php artisan optimize
```

Esto limpiará cualquier referencia obsoleta al middleware `InjectSaml2ButtonMiddleware`.

🎨 Personalización de Iconos
---------------------------

[](#-personalización-de-iconos)

### **Agregar Nuevos Iconos de Proveedores:**

[](#agregar-nuevos-iconos-de-proveedores)

1. **Crear archivo SVG:**

    ```
    # Crear en resources/views/icons/
    touch resources/views/icons/tu-proveedor.blade.php
    ```
2. **Estructura del archivo:**

    ```
    {{-- Tu Proveedor Icon --}}

    ```
3. **Actualizar opciones en configuración:**

    ```
    Select::make('button_icon')
        ->options([
            'okta' => 'Okta',
            'microsoft' => 'Microsoft',
            'google' => 'Google',
            'auth0' => 'Auth0',
            'tu-proveedor' => 'Tu Proveedor', // ← Agregar aquí
            // ...
        ])
    ```

### **Usar Heroicons:**

[](#usar-heroicons)

```
'button_icon' => 'heroicon-o-rocket-launch'
'button_label' => 'Iniciar sesión con SAML2'
```

### **Usar Iconos de Proveedores:**

[](#usar-iconos-de-proveedores)

```
'button_icon' => 'okta'
'button_label' => 'Iniciar sesión con Okta'
```

🔮 Futuras Mejoras
-----------------

[](#-futuras-mejoras)

- **Soporte genérico** - Renombrar a `filament-saml2` para soporte universal
- **Más iconos de proveedores** - OneLogin, Ping Identity, Shibboleth, etc.
- **Temas personalizables** - Personalizar apariencia del botón de login
- **Múltiples proveedores** - Soporte para varios proveedores SAML2 simultáneos
- **Iconos personalizados** - Subir iconos SVG desde la interfaz

📄 Licencia
----------

[](#-licencia)

MIT License

🤝 Contribuir
------------

[](#-contribuir)

Las contribuciones son bienvenidas. Por favor, abre un issue o pull request.

📞 Soporte
---------

[](#-soporte)

Si tienes problemas o preguntas, por favor abre un issue en el repositorio.

---

**Nota**: Este plugin está optimizado para Okta pero funciona con cualquier proveedor SAML2 estándar.

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance65

Regular maintenance activity

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

20

Last Release

213d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/6791a7ebf3e931aa0d9abab6cbb221cc1e108d7b0e47db5f9b352aa37697e3e9?d=identicon)[Johnrivera7](/maintainers/Johnrivera7)

---

Top Contributors

[![Johnrivera7](https://avatars.githubusercontent.com/u/32875176?v=4)](https://github.com/Johnrivera7 "Johnrivera7 (44 commits)")

---

Tags

laravelAuthenticationSSOSAML2filamentfilament-pluginoktaidentity provider

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/johnriveragonzalez-saml2-okta/health.svg)

```
[![Health](https://phpackages.com/badges/johnriveragonzalez-saml2-okta/health.svg)](https://phpackages.com/packages/johnriveragonzalez-saml2-okta)
```

###  Alternatives

[andrewdwallo/filament-companies

A comprehensive Laravel authentication and authorization system designed for Filament, focusing on multi-tenant company management.

34450.0k2](/packages/andrewdwallo-filament-companies)[chrisreedio/socialment

Provides Socialite functionality for Filament.

10884.8k1](/packages/chrisreedio-socialment)[diogogpinto/filament-auth-ui-enhancer

This Filament plugin empowers you to transform your auth pages with ease, allowing you to make them truly stand out. It offers a flexible alternative to the default auth pages in the Filament Panels package.

13493.9k6](/packages/diogogpinto-filament-auth-ui-enhancer)[caresome/filament-auth-designer

Transform Filament's default auth pages into stunning, brand-ready experiences

3916.8k2](/packages/caresome-filament-auth-designer)[afatmustafa/filamentv3-turnstile

A plugin to help you implement the Cloudflare Turnstile into your Filament panels.

1525.8k](/packages/afatmustafa-filamentv3-turnstile)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
