
Neste tutorial, vou explicar-vos como integrar o Authentik com o GLPI, de forma a centralizar a autenticação dos utilizadores. Vamos ver juntos como configurar a ligação com base na autenticação transmitida nos cabeçalhos HTTP, o que permite simplificar a gestão das contas e melhorar a segurança do seu ambiente
Índice
O que é a autenticação por pedido HTTP?
A autenticação por pedido HTTP é um mecanismo que permite a uma aplicação delegar a gestão da identidade dos utilizadores a um serviço externo. Concretamente, quando um utilizador tenta aceder a uma aplicação como o GLPI, é primeiro autenticado por um serviço de terceiros (neste caso, o Authentik). Assim que a identidade é verificada, as informações do utilizador (por exemplo, o seu nome de utilizador ou endereço de e-mail) são transmitidas à aplicação de destino através de um cabeçalho HTTP.
O GLPI não precisa, portanto, de gerir diretamente a palavra-passe do utilizador. Baseia-se nos dados fornecidos na solicitação HTTP para identificar a pessoa e conceder-lhe acesso. Este método é particularmente interessante para centralizar os acessos, simplificar a gestão de contas e reforçar a segurança, limitando os pontos de armazenamento de palavras-passe.
Em resumo, a autenticação HTTP funciona como uma ponte de confiança entre o serviço de autenticação (Authentik) e a aplicação final (GLPI).

Pré-requisitos
Para começar, é necessário ter o GLPI 11 instalado e o Authenik. O ideal é dispor de um proxy reverso no Nginx (caso contrário, será necessário adaptar o tutorial ao seu ambiente).
Os utilizadores devem estar configurados no GLPI.
Configuração do Authentik para a autenticação HTTP no GLPI
Para começar, vamos adicionar o provedor e a aplicação GLPI 11 no Authentik.
No menu «Aplicações», clique em «Provedor» 1 e, em seguida, clique em «Criar» 2.

Na lista de fornecedores, clique em «Fornecedor de proxy» 1 e, em seguida, no botão «Seguinte» 2.

Atribua um nome ao fornecedor 1, selecione o fluxo de autenticação 2, no tipo, selecione «Transferir a autenticação (aplicação única)» 3, introduza o URL do GLPI 4 e clique no botão «Concluir» 5.

O fornecedor foi criado.
No menu de navegação, desdobre «Aplicações», depois aceda a «Aplicações» 1 e, na página das Aplicações, clique no botão «Criar» 2.

Atribua um nome à aplicação 1 e introduza o slug 2, caso este não seja gerado automaticamente; no campo «Provedor», selecione o GLPI 3 que foi criado anteriormente e clique no botão «Criar» 4.

A aplicação está criada.

Publique o fornecedor GLPI no Avant-Post (Outpost) do Authentik: a partir do menu «Aplicações», clique em «Outposts» 1 e, em seguida, no botão de edição de «Authentik Embedded Outpost» 2.

Adicione a aplicação GLPI às aplicações selecionadas 1 e clique em «Atualizar» 2.

A configuração no Authentik está concluída.
Ativar e configurar a autenticação por pedido HTTP no GLPI 11
Vamos agora passar à configuração do GLPI 11
No menu, aceda a «Configuração» / «Autenticação» e clique em «Outros métodos de autenticação» 1.

Na página de configuração, teremos de adicionar a variável que foi passada para o Authentik; clique no botão + 1.

Introduza o nome da variável, que é: HTTP_X_AUTHENTIK_USERNAME 1 e, em seguida, clique em Adicionar 2.

Em seguida, no GLPI, selecione a variável que acabou de criar 1 no campo: «Campo de armazenamento do identificador na solicitação HTTP» e clique em «Guardar» 2.

Configuração do Nginx
Por fim, vamos passar à configuração do Nginx, que é o proxy inverso para o acesso ao GLPI e ao Authentik.
No seu proxy inverso, comece por guardar o virtualhost do GLPI:
sudo cp vh-glpi vh-glpi.BACKUPPara nos ajudar a configurar o virtualhost, o Authentik fornece-nos a configuração a implementar; para tal, na lista de «Providers», clique naquele que se destina ao GLPI.

Nos detalhes do Provedor, na secção de configuração, aceda à secção Nginx (standalone) e poderá ver a configuração a aplicar no Nginx.

Utilize os elementos de configuração para os colar no virtualhost do GLPI, adaptando as diretivasproxy_passao seu ambiente, se necessário.
Para o ajudar, eis a configuração do meu virtualhost do GLPI:
server{
listen 443 ssl;
http2 on;
server_name glpi.domain.tld;
access_log /var/log/nginx/glpi.domain.tld_access.log;
more_clear_headers Server;
more_clear_headers X-Powered-By;
client_max_body_size 0;
ssl_certificate /etc/nginx/ssl/san-internal.pem;
ssl_certificate_key /etc/nginx/ssl/san-internal.key;
proxy_buffers 8 16k;
proxy_buffer_size 32k;
location /{
proxy_pass http://ip-glpi-server;
proxy_ssl_verify off;
include proxy_params;
##############################
# authentik-specific config
##############################
auth_request /outpost.goauthentik.io/auth/nginx;
error_page 401 = @goauthentik_proxy_signin;
auth_request_set $auth_cookie $upstream_http_set_cookie;
add_header Set-Cookie $auth_cookie;
# translate headers from the outposts back to the actual upstream
auth_request_set $authentik_username $upstream_http_x_authentik_username;
auth_request_set $authentik_groups $upstream_http_x_authentik_groups;
auth_request_set $authentik_entitlements $upstream_http_x_authentik_entitlements;
auth_request_set $authentik_email $upstream_http_x_authentik_email;
auth_request_set $authentik_name $upstream_http_x_authentik_name;
auth_request_set $authentik_uid $upstream_http_x_authentik_uid;
proxy_set_header X-authentik-username $authentik_username;
proxy_set_header X-authentik-groups $authentik_groups;
proxy_set_header X-authentik-entitlements $authentik_entitlements;
proxy_set_header X-authentik-email $authentik_email;
proxy_set_header X-authentik-name $authentik_name;
proxy_set_header X-authentik-uid $authentik_uid;
proxy_set_header HTTP_AUTH_USER $authentik_username;
}
# all requests to /outpost.goauthentik.io must be accessible without authentication
location /outpost.goauthentik.io {
# When using the embedded outpost, use:
proxy_pass http://ip-authentik:80/outpost.goauthentik.io;
# For manual outpost deployments:
# proxy_pass http://outpost.company:9000;
# Note: ensure the Host header matches your external authentik URL:
proxy_set_header Host $host;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
add_header Set-Cookie $auth_cookie;
auth_request_set $auth_cookie $upstream_http_set_cookie;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
}
# Special location for when the /auth endpoint returns a 401,
# redirect to the /start URL which initiates SSO
location @goauthentik_proxy_signin {
internal;
add_header Set-Cookie $auth_cookie;
return 302 /outpost.goauthentik.io/start?rd=$scheme://$http_host$request_uri;
# For domain level, use the below error_page to redirect to your authentik server with the full redirect path
# return 302 https://authentik.company/outpost.goauthentik.io/start?rd=$scheme://$http_host$request_uri;
}
}
server{
listen 80;
server_name glpi.domain.tld;
more_clear_headers Server;
more_clear_headers X-Powered-By;
if ($host = glpi.domain.tld;) {
return 301 https://$host$request_uri;
}
return 404;
}Teste a configuração do Nginx:
sudo nginx -tAtualize a configuração:
sudo systemctl reload nginxTeste a autenticação com o Authentik
A partir de outro navegador (ou no modo privado), aceda ao URL do GLPI; deverá ser redirecionado para o formulário de autenticação do Authentik. Introduza o nome de utilizador e a palavra-passe de um utilizador existente no Authentik e que tenha sido configurado no GLPI.

Se tudo estiver correto, estou ligado ao GLPI e tenho acesso ao portal do utilizador.

Como complemento para o ajudar na configuração, eis a lista das variáveis $_SERVER do GLPI com o Authentik.

Conclusão
Graças à integração do Authentik com o GLPI através da autenticação por pedido HTTP, beneficia de uma solução simples e segura para centralizar a gestão de identidades. Este método permite delegar a autenticação a um serviço dedicado, garantindo simultaneamente uma experiência fluida para os utilizadores, que já não precisam de memorizar vários credenciais.
Ao implementar esta configuração, facilita a administração do seu ambiente, reforçando simultaneamente a segurança global. Esta abordagem é particularmente útil em infraestruturas onde várias aplicações têm de partilhar um mesmo sistema de autenticação.
