Autenticando Laravel com Azure Active Directory

Autenticando Laravel com Azure Active Directory

O Laravel é uma popular framework PHP que fornece uma série de recursos e ferramentas para ajudar na criação de aplicativos web de alta qualidade. Um dos recursos importantes de qualquer aplicativo web é a autenticação de usuários, e o Laravel fornece uma solução integrada para isso. No entanto, em muitos casos, os aplicativos precisam se integrar a outros sistemas de autenticação, como o Azure Active Directory (AAD). Neste artigo, você aprenderá como configurar o AAD no Laravel.

Pré-requisitos

Antes de começar a configurar o AAD no Laravel, você precisa de:

  • Uma conta do Azure.
  • Acesso ao Azure Active Directory.
  • Um aplicativo Laravel instalado e configurado.

Configurando o Azure Active Directory

Crie um diretório de aplicativos do AAD

Para iniciar, você precisa criar um diretório de aplicativos do AAD. Para fazer isso, faça login na sua conta do Azure e clique em “Azure Active Directory”. Em seguida, clique em “Diretórios e recursos” e depois em “Novo diretório”. Preencha os detalhes necessários e clique em “Criar”.

Crie um aplicativo de AAD

Depois de criar o diretório de aplicativos, você precisa criar um aplicativo. Para fazer isso, clique em “Aplicativos registrados” e depois em “Registrar um novo aplicativo”. Preencha os detalhes necessários e clique em “Registrar”.

Configure o aplicativo Laravel

Em seguida, você precisa instalar o pacote de autenticação Microsoft Graph do Laravel. Para fazer isso, execute o seguinte comando no terminal:

composer require laravel/socialite "^5.0"

Depois de instalado, você precisa adicionar o seguinte trecho de código no arquivo config/services.php:

'azure' => [
    'client_id' => env('AZURE_CLIENT_ID'),
    'client_secret' => env('AZURE_CLIENT_SECRET'),
    'redirect' => env('AZURE_REDIRECT'),
],

Em seguida, você precisa definir as variáveis de ambiente para as informações do aplicativo do AAD. Você pode fazer isso no arquivo .env:

AZURE_CLIENT_ID=your-client-id
AZURE_CLIENT_SECRET=your-client-secret
AZURE_REDIRECT=http://your-callback-url

Substitua your-client-id, your-client-secret e http://your-callback-url pelos valores correspondentes do seu aplicativo do AAD.

Configure o Laravel Socialite

Depois de configurar o aplicativo Laravel, você precisa configurar o Laravel Socialite. Para fazer isso, adicione o seguinte código no arquivo config/auth.php:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
        'hash' => false,
    ],

    'azure' => [
        'driver' => 'session',
        'provider' => 'azure',
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],

    'azure' => [
        'driver' => 'microsoft',
        'model' => App\AzureUser::class,
    ],
],

Crie as rotas e controllers necessários

Em seguida, você precisa criar as rotas e controllers necessários para gerenciar a autenticação do AAD. Adicione o seguinte código ao arquivo routes/web.php:

Route::get('login/azure', 'Auth\LoginController@redirectToProvider');
Route::get('login/azure/callback', 'Auth\LoginController@handleProviderCallback');

Em seguida, crie um novo controller chamado LoginController com o seguinte código:

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Socialite;

class LoginController extends Controller
{
    public function redirectToProvider()
    {
        return Socialite::driver('azure')->redirect();
    }

    public function handleProviderCallback()
    {
        $user = Socialite::driver('azure')->user();

        // Handle the user authentication and redirection...
    }
}

Teste a autenticação do AAD

Depois de completar todas as etapas acima, você pode testar a autenticação do AAD. Para fazer isso, acesse a URL http://your-app-url/login/azure e clique em “Entrar com o Azure”. Você será redirecionado para a página de login do Azure e, após fazer login, será redirecionado de volta para o seu

aplicativo Laravel. O objeto de usuário do AAD será capturado no método handleProviderCallback e você pode usá-lo para autenticar o usuário em sua aplicação.

Por exemplo, você pode armazenar o usuário em sua tabela de usuários local ou buscar um usuário já existente antes de autenticá-lo:

public function handleProviderCallback()
{
    $azureUser = Socialite::driver('azure')->user();

    $user = User::firstOrCreate([
        'email' => $azureUser->email,
    ], [
        'name' => $azureUser->name,
        'azure_id' => $azureUser->id,
    ]);

    Auth::login($user, true);

    return redirect()->intended('home');
}

E é isso! Agora você tem uma solução de autenticação do Azure Active Directory integrada ao Laravel. Certifique-se de seguir as melhores práticas de segurança ao implementar essa solução em sua aplicação.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *