(16) 981791110 contato@policast.studio

Introdução

O Symfony é um dos frameworks PHP mais utilizados em todo o mundo. Ele é uma ferramenta poderosa que permite desenvolver rapidamente aplicações web eficientes e escaláveis. Quando se trata de autenticação de usuário, o Symfony oferece diversas opções, incluindo a autenticação LDAP. Neste artigo, vamos detalhar o processo de integração do Symfony com um sistema de autenticação LDAP.

Passo 1: Configurando o ambiente

Antes de começar a configurar a autenticação LDAP, é necessário ter um ambiente Symfony em funcionamento. Certifique-se de que você possua a última versão do Symfony instalada em sua máquina e que o ambiente de desenvolvimento esteja configurado corretamente. Caso contrário, siga as instruções no site oficial do Symfony para configurar o ambiente.

Passo 2: Instalando o pacote LDAP

O próximo passo é instalar o pacote LDAP. Para isso, abra o terminal e execute o seguinte comando:

 composer require symfony/ldap 

Este comando irá baixar e instalar o pacote necessário para integrar o Symfony com o LDAP.

Passo 3: Configurando o arquivo security.yml

Agora é necessário configurar o arquivo security.yml para habilitar a autenticação LDAP. Abra o arquivo security.yml em seu editor de texto preferido e adicione as seguintes linhas:


security:
providers:
my_ldap:
ldap:
service: SymfonyComponentLdapLdap
base_dn: 'dc=mydomain,dc=com'
search_dn: 'cn=admin,dc=mydomain,dc=com'
search_password: 'mypassword'
default_roles: ROLE_USER
firewalls:
secured_area:
anonymous: ~
pattern: ^/
provider: my_ldap
form_login_ldap:
login_path: /login
check_path: /login
logout:
path: /logout
target: /

Observe que a chave “providers” está definida para uma conexão LDAP chamada “my_ldap”. As linhas seguintes definem a localização da base DN, o DN de pesquisa e a senha de pesquisa. A chave “default_roles” define as funções padrão do usuário. A chave “firewalls” habilita a autenticação LDAP e define uma área de segurança protegida. A opção “anonymous” permite que usuários anônimos acessem a página de login. As opções “form_login_ldap” definem o caminho e o método de autenticação e a chave “logout” define o caminho para sair da página.

Passo 4: Configurando o arquivo services.yml

Agora é necessário configurar o arquivo services.yml para habilitar o serviço LDAP. Abra o arquivo services.yml em seu editor de texto preferido e adicione as seguintes linhas:


services:
SymfonyComponentLdapLdap:
arguments: ['@SymfonyComponentLdapAdapterExtLdapAdapter']
SymfonyComponentLdapAdapterExtLdapAdapter:
arguments:
- host: mydomain.com
port: 389
options:
protocol_version: 3
referrals: false

Observe que estamos definindo o host e a porta, bem como definindo algumas opções especiais.

Passo 5: Configurando a entidade de usuário

Para finalizar a configuração, é necessário configurar a entidade de usuário. Abra a sua entidade de usuário e adicione o seguinte código:


use SymfonyComponentSecurityCoreUserUserInterface;
use SymfonyComponentLdapEntry;

class User implements UserInterface
{
// ...

public static function createFromLdapEntry(Entry $entry)
{
$user = new self();
$user->setUsername($entry->getDn());
$user->setPassword('');
$user->setRoles(['ROLE_USER']);
return $user;
}
}

Aqui estamos definindo a “User” como sendo uma classe que implementa “UserInterface”. A chave “createFromLdapEntry” define o método para criar um usuário a partir de um objeto “Entry” LDAP. O método adiciona o DN do usuário, define uma senha vazia e cria a função “ROLE_USER”.

Passo 6: Criando a página de login

Agora é hora de criar a página de login. Crie um arquivo de template chamado “login.html.twig” e adicione o seguinte código:


{% block body %}
{% if error %}

{{ error.messageKey|trans(error.messageData, 'security') }}

{% endif %}




{% endblock %}

Este template define um formulário básico de login que enviará as informações do usuário para o controller.

Passo 7: Configurando o Controller

Abra o Controller relacionado à página de login e adicione o seguinte código:


use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentRoutingAnnotationRoute;
use SymfonyComponentSecurityHttpAuthenticationAuthenticationUtils;

class SecurityController extends AbstractController
{
/**
* @Route("/login", name="login")
*/
public function login(AuthenticationUtils $authenticationUtils)
{
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();

// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();

return $this->render('security/login.html.twig', array(
'last_username' => $lastUsername,
'error' => $error,
));
}
}

Este código define um método “login” que recebe uma instância de “AuthenticationUtils”. Este objeto é usado para recuperar os dados de autenticação, como o último nome de usuário inserido e se ocorreu algum erro na autenticação. Este método renderiza a página de login e passa as informações para o template Twig que mostramos anteriormente.

Passo 8: Configurando o logout

Agora é necessário configurar a página de logout. Crie um arquivo de template chamado “logout.html.twig” e adicione o seguinte código:


{% block body %}

Logged out successfully!

{% endblock %}

Este template simplesmente exibe uma mensagem quando o usuário faz logout com sucesso.

Passo 9: Configurando o Controller de logout

Abra o Controller de logout e adicione o seguinte código:


use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentRoutingAnnotationRoute;
use SymfonyComponentHttpFoundationResponse;
use SensioBundleFrameworkExtraBundleConfigurationSecurity;

class SecurityController extends AbstractController
{
// ...

/**
* @Route("/logout", name="logout")
* @Security("has_role('ROLE_USER')")
*/
public function logout()
{
// do nothing
return new Response('', 204);
}
}

Este código define o método “logout” que simplesmente retorna uma resposta vazia e um código HTTP 204. O código 204 nos informa ao navegador que não é necessário exibir nenhuma mensagem.

Passo 10: Testando

Agora é hora de testar a sua aplicação. Abra o navegador e navegue para o seu site. Acesse a página de login e insira as informações do usuário LDAP. Se tudo ocorreu corretamente, você deverá ser autenticado e redirecionado para a página principal. Tente efetuar o logout e veja se a página de logout é exibida corretamente.

Conclusão

Parabéns! Você acaba de integrar o Symfony com um sistema de autenticação LDAP. Esta integração permite que os usuários façam login em sua aplicação usando suas credenciais LDAP. Esperamos que este tutorial seja útil para você. Caso tenha alguma dúvida ou comentário, deixe-nos saber nos comentários abaixo.