Utilizar Azure Active Directory (AAD) para la autenticación Laravel.

    Para utilizar Azure Active Directory (AAD) para la autenticación en lugar de las credenciales tradicionales (usuario/contraseña) al conectar tu aplicación Laravel a una base de datos de Azure SQL Database, es necesario configurar una autenticación con AAD en tu entorno de base de datos de Azure. Este tipo de autenticación es más segura y se integra bien en ambientes que ya usan Azure AD para la gestión de identidades.

    A continuación, te guiaré paso a paso para configurar la autenticación AAD en Azure SQL Database y luego cómo integrarla en una aplicación Laravel.


    1. Configurar Azure SQL Database para usar autenticación con Azure Active Directory (AAD)

    Paso 1: Habilitar la autenticación de Azure AD en tu base de datos

    1. Crear un usuario de Azure AD (si no lo tienes):
      • En el Azure Portal, ve a Azure Active Directory.
      • En la sección Usuarios, asegúrate de tener un usuario creado en Azure AD al que quieras otorgar acceso a la base de datos SQL. Si no tienes uno, puedes crear un nuevo usuario o usar uno existente.
    2. Configurar un servidor de Azure SQL con Azure AD:
      • Asegúrate de que el servidor de base de datos SQL en Azure esté configurado para permitir la autenticación de Azure AD.
      • Para hacer esto, ve a tu Azure SQL Database en el Azure Portal.
      • En el menú izquierdo, selecciona Autenticación de Active Directory y activa la autenticación de Azure AD para el servidor.
      • En el campo Administrador de Active Directory selecciona el usuario de Azure AD que será el administrador de la base de datos (este usuario necesitará permisos para gestionar usuarios y roles en la base de datos SQL).

    Paso 2: Asignar permisos a los usuarios de AAD

    1. Conectar a la base de datos SQL usando un cliente como Azure Data Studio o SQL Server Management Studio (SSMS) con la cuenta de administrador de Azure AD (puede ser la cuenta de administrador que configuraste previamente).
    2. Crear un login y un usuario en SQL para el usuario de Azure AD: Ejecuta las siguientes consultas en la base de datos de SQL (asegúrate de reemplazar los valores correspondientes): -- Crear un login para el usuario de Azure AD CREATE LOGIN [usuario_aad@dominio.com] FROM EXTERNAL PROVIDER; -- Crear un usuario para ese login en la base de datos CREATE USER [usuario_aad@dominio.com] FOR LOGIN [usuario_aad@dominio.com]; -- Otorgar permisos (por ejemplo, db_owner) ALTER ROLE db_owner ADD MEMBER [usuario_aad@dominio.com];

    Paso 3: Verificar la configuración

    Para verificar que todo está configurado correctamente, puedes intentar iniciar sesión en la base de datos SQL desde un cliente usando la autenticación AAD. La autenticación se hará mediante la cuenta de Azure AD y no mediante la contraseña directamente en la base de datos SQL.


    2. Integrar la autenticación Azure AD en Laravel

    Ahora que has configurado la autenticación de AAD en Azure SQL Database, vamos a integrar esto en tu aplicación Laravel.

    Paso 1: Instalar el paquete necesario

    Laravel no tiene soporte nativo para la autenticación AAD en SQL Server, por lo que necesitas un paquete que pueda manejar este tipo de autenticación.

    Una de las opciones es usar el paquete laravel-sqlsrv, que soporta SQL Server en Laravel, pero para usar autenticación AAD, también necesitarás usar un proveedor adecuado para autenticación basada en tokens.

    Puedes comenzar instalando el controlador de SQL Server para Laravel si aún no lo has hecho:

    Paso 2: Modificar el archivo .env

    Configura el archivo .env para usar la conexión con Azure SQL Database utilizando la autenticación AAD. Debes agregar las siguientes variables de conexión:

    Nota que aquí el usuario será el nombre de usuario de Azure AD y la contraseña puede ser un token generado dinámicamente a través de Azure AD o un secreto generado previamente.

    Paso 3: Autenticación con Azure Active Directory (usando un Token)

    La autenticación de AAD en Azure SQL Database generalmente se realiza mediante un token de acceso que se obtiene a través de un flujo de autenticación OAuth2. Laravel no tiene soporte directo para esto, pero puedes generar el token de acceso en tu código y usarlo para conectarte a la base de datos.

    Aquí te dejo un ejemplo de cómo obtener un token de acceso utilizando la librería oficial de Microsoft para PHP y luego usarlo para la conexión a la base de datos.

    1. Instalar la librería de Microsoft para autenticación con Azure AD: Primero, necesitas instalar el paquete Microsoft Graph para interactuar con Azure AD y obtener el token: composer require microsoft/microsoft-graph
    2. Obtener el token de acceso: A continuación, puedes escribir un código en tu aplicación Laravel para obtener un token de acceso de Azure AD. Aquí tienes un ejemplo básico de cómo hacerlo utilizando el flujo de autenticación client_credentials: use GuzzleHttp\Client; function obtenerTokenAzureAD() { $client = new Client(); $response = $client->post('https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token', [ 'form_params' => [ 'client_id' => 'tu-client-id', 'client_secret' => 'tu-client-secret', 'scope' => 'https://database.windows.net/.default', 'grant_type' => 'client_credentials', ] ]); $body = json_decode($response->getBody()); return $body->access_token; }
      • Reemplaza {tenant_id} con tu ID de inquilino de Azure AD.
      • Reemplaza 'tu-client-id' y 'tu-client-secret' con el ID y el secreto de tu aplicación registrada en Azure AD.
      • El scope debe ser 'https://database.windows.net/.default', que es el valor adecuado para acceder a la base de datos SQL de Azure.
    3. Usar el token en Laravel: Una vez que tengas el token de acceso, puedes usarlo para autenticarte en la base de datos. Modifica la configuración de la base de datos en el archivo .env o en config/database.php para usar este token: 'connections' => [ 'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST'), 'port' => env('DB_PORT'), 'database' => env('DB_DATABASE'), 'username' => env('DB_USERNAME'), 'password' => obtenerTokenAzureAD(), // Usar el token de acceso 'encrypt' => true, 'trust_server_certificate' => true, ], ], De esta forma, Laravel utilizará el token de acceso obtenido a través de Azure AD para autenticar la conexión con la base de datos.

    3. Resumen

    Utilizar Azure Active Directory (AAD) para autenticar una aplicación Laravel con Azure SQL Database implica los siguientes pasos:

    1. Configurar Azure SQL Database para permitir la autenticación AAD.
    2. Asignar permisos adecuados a los usuarios de AAD en la base de datos.
    3. Obtener un token de acceso de AAD utilizando el flujo de autenticación OAuth2.
    4. Configurar Laravel para usar este token de acceso en lugar de una contraseña tradicional.

    Recuerda que la implementación de AAD en una aplicación Laravel requiere un flujo de autenticación adicional para obtener el token de acceso, y deberás gestionar los permisos de acceso adecuadamente desde Azure AD para asegurar que solo los usuarios y aplicaciones autorizados tengan acceso a la base de datos.

    Leave a Reply

    Your email address will not be published. Required fields are marked *