(16) 981791110 contato@policast.studio

Como Implementar o Single Sign-On (SSO) no Symfony: automatize o processo de autenticação em diferentes subdomínios de sua aplicação

O Single Sign-On (SSO), ou autenticação única, é um recurso que permite que o usuário realize o login em um site e seja automaticamente autenticado em diversos outros serviços sem precisar de um novo login em cada site ou aplicação. Com o SSO, o usuário pode entrar em sua conta em um único site e ter acesso a conteúdos e recursos em todas as outras aplicações de diferentes subdomínios.

Mas, afinal, como implementar o Single Sign-On em uma aplicação Symfony?

Para implementar o SSO em sua aplicação Symfony, é preciso fazer uso de um servidor de autenticação centralizado, que pode ser um servidor OAuth2 ou um servidor SAML. Este servidor ficará responsável por gerenciar o processo de autenticação e autorização dos usuários.

O primeiro passo é configurar a aplicação Symfony para se comunicar com o servidor de autenticação. Para isso, é necessário instalar os componentes necessários utilizando o Composer.

 composer require symfony/security-bundle 

Em seguida, é preciso configurar a aplicação para utilizar o servidor de autenticação. Para isso, é necessário adicionar as informações de configuração do servidor no arquivo security.yaml.

 security:
providers:
in_memory:
memory: ~
firewalls:
main:
anonymous: ~
guard:
authenticators:
- AppSecurityAuthenticator
logout:
path: app_logout
target: app_login
access_control:
- { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }

É possível configurar o SSO para trabalhar com diferentes subdomínios?

Sim, é possível implementar o SSO com múltiplos subdomínios. Para isso, é necessário configurar o servidor de autenticação para enviar um cookie válido para todas as subdomínios.

Para realizar essa configuração, é preciso definir o domínio do cookie com um ponto no início. Essa configuração fará com que o cookie seja válido para todos os subdomínios.

 cookie_domain: '.meusite.com.br' 

Com essa configuração, o cookie será válido para todos os subdomínios de meusite.com.br.

E se eu precisar fazer a autenticação de diferentes tipos de usuários?

É possível implementar o SSO para autenticar diferentes tipos de usuários. Para isso, é necessário configurar o servidor de autenticação para enviar informações adicionais no token de autenticação, como o tipo de usuário.

Na aplicação Symfony, o token de autenticação pode ser acessado no objeto Security. A partir deste objeto, é possível obter as informações adicionais enviadas pelo servidor de autenticação.

 $user = $this->get('security.token_storage')->getToken()->getUser();
$type = $user->getType();

Com essas informações, é possível implementar diferentes políticas de autorização de acordo com o tipo de usuário.

Conclusão

O Single Sign-On é uma excelente ferramenta para aumentar a produtividade e melhorar a experiência do usuário em aplicações com múltiplos subdomínios. Com a integração do servidor de autenticação, é possível automatizar o processo de autenticação e autorização de usuários, além de permitir a autenticação de diferentes tipos de usuários.