iseazy / security
Installs: 110
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:symfony-bundle
pkg:composer/iseazy/security
Requires
- firebase/php-jwt: v6.11.1
- symfony/cache: 6.4.*
- symfony/config: 6.4.*
- symfony/dependency-injection: 6.4.*
- symfony/http-foundation: 6.4.*
- symfony/security-bundle: 6.4.*
- symfony/security-http: 6.4.*
- symfony/uid: 6.4.*
- symfony/yaml: 6.4.*
Requires (Dev)
- phpunit/phpunit: ^12.2
- squizlabs/php_codesniffer: *
README
Este paquete proporciona autenticadores para Symfony que permiten validar JWT emitidos por Keycloak y autenticación por API Key.
Instalación
- Añade el paquete a tu proyecto Symfony con Composer:
composer require iseazy/security
- Define los parámetros necesarios en tu archivo de configuración:
Si usas jwt con keycloak, asegúrate de definir las variables de entorno necesarias en tu archivo
.env:
- IDAM_URI es la URL de tu servidor Keycloak.
- IDAM_EXPECTER_ISSUER_URI es la URL de tu aplicación que espera el emisor del JWT.
- IDAM_AUDIENCE es el público esperado del JWT. Si no esta definido, se usará el valor por defecto
IsEazy.
# .env
IDAM_URI=https://keycloak.example.com
IDAM_EXPECTER_ISSUER_URI=http://localhost:8118
IDAM_AUDIENCE=IsEazy
Si usas autenticación por API Key, define la clave en tu archivo .env:
# .env
API_KEY=your_api_key_here
- Configura el firewall en tu archivo de configuración de seguridad:
# config/packages/security.yaml security: firewalls: api: pattern: ^/api stateless: true custom_authenticators: - Iseazy\Security\Security\JwtAuthenticator - Iseazy\Security\Security\ApiKeyAuthenticator entry_point: Iseazy\Security\Security\JwtAuthenticator access_control: - { path: ^/api, roles: ROLE_USER }
- Configura el proveedor de usuarios para usar el servicio de usuario de Iseazy:
- Para JWT, implementa la interfaz
JwtUserFactoryInterfacey crea un servicio que devuelva el usuario basado en el payload del JWT.
use Iseazy\Security\Security\IseazyUserInterface; use Symfony\Component\Security\Core\User\UserInterface; class UserFactory implements JwtUserFactoryInterface { public function createUser(array $payload): UserInterface { // Tu lógica para crear o cargar el usuario desde el payload JWT return User::createFromPayload($payload); } }
- Para API Key, implementa la interfaz
ApiKeyUserFactoryInterfacey crea un servicio que devuelva el usuario basado en la clave API.
use Iseazy\Security\Security\ApiKeyUserFactoryInterface; use Symfony\Component\Security\Core\User\UserInterface; class ApiKeyUserFactory implements ApiKeyUserFactoryInterface { public function createUser(string $apiKey): UserInterface { // Tu lógica para crear o cargar el usuario desde la clave API return User::createFromApiKey($apiKey); } }
- Le indicamos a Symfony que use estas clases como proveedores de usuarios en tu configuración de seguridad:
iseazy_security: jwt_user_class: TaskBundle\Context\User\Domain\Entity\User api_key_user_class: TaskBundle\Context\User\Domain\Entity\ApiKeyUser
git tag -d v1.0.2 git push origin :refs/tags/v1.0.2 git tag -a v1.0.2 -m "Release v1.0.2" git push origin v1.0.2