stgbundle/cas-bundle

Bundle de cas para symfony 6.*

Installs: 3 169

Dependents: 1

Suggesters: 0

Security: 0

Stars: 3

Watchers: 2

Forks: 2

Open Issues: 5

Type:symfony-bundle

7.1 2023-12-29 14:06 UTC

README

Central Authentication Service para Symfony 6.4

Instalación

1). Instalación desde packagist.org: https://packagist.org/packages/stgbundle/cas-bundle

composer require stgbundle/cas-bundle

2). Ajustar la configuración de seguridad (security.yml)

security:
    # ...
    providers:
        app_user_provider:
            entity:
                class: App\Entity\Usuario
                property: cuil
    firewalls:
        secure:
            pattern: ^/secure
            provider: app_user_provider
            custom_authenticators:
                - stg.cas_authenticator
            logout:
                path: /secure/logout
        main:
            anonymous: lazy
    # ...

3). Configuración del bundle

Crear el archivo config\packages\cas.yaml:

cas:
    hostname: dsso.santafe.gob.ar
    url: /service-auth # opcional
    port: 443 # opcional
    service_base_url: http://localhost:80  # Url base del sistema que utiliza el bundle
    user: cuil # Si se quiere acceder por cuil sino uid. Por defecto se utiliza cuil
    logout_redirect: home  # opcional
    login_failure: failure # opcional - Debe definirse en el área pública
    debug: true # opcional - Se recomienda false en producción
    version: "3.0" # opcional

4). Agregar las rutas vacias

// src/Controller/DefaultController.php

    /**
     * @Route("/secure/logout")
    */
    public function logout()
    {
    }

5). Login failure

En caso de no existir el usuario en la base de datos de la aplicación, el bundle redirije la petición a la ruta definida en la configuración del bundle y le envía como parámetro el cuil o uid ingresado, según corresponda

    /**
    * @Route("/failure", name="failure")
    */    
    public function failure(Request $request): Response
    {
        return new Response(
            'Error al autenticar - Usuario: ' . $request->get('user')
        );
    }

6). Uso con Ajax

El bundle detecta cuando la llamada es ajax y en caso de necesitar autorización no lo redirige a la pantalla del sso, sino que devuelve el código http 401 (Unauthorized). Queda en el cliente detectar esta respuesta y redirigir la llamada.