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.