Navegando pela Autenticação de Identidade: Do LDAP aos Protocolos Modernos

March 28, 2024

Technology

Ao construir o mecanismo de autenticação de identidade para aplicações de rede, os engenheiros enfrentam várias escolhas. Uma abordagem é projetar um mecanismo de autenticação personalizado, que pode ser adequado para certas aplicações recém-desenvolvidas. Outra abordagem é adotar padrões populares amplamente reconhecidos, o que não apenas ajuda na compatibilidade com aplicações legadas, mas também garante a interoperabilidade com outros serviços, simplificando assim o processo de integração. Portanto, um entendimento profundo das tecnologias comuns de autenticação de identidade é crucial para construir serviços de autenticação de identidade robustos e interoperáveis.

LDAP / Active Directory

LDAP (Lightweight Directory Access Protocol) é um protocolo baseado em IP projetado especificamente para acessar serviços de diretório. Vale mencionar que o Active Directory da Microsoft também suporta esse protocolo.

Serviços de diretório são uma forma especial de banco de dados que organiza vários recursos (como usuários, organizações, dispositivos, etc.) usando identificadores únicos. Esse armazenamento de dados estruturado permite que os clientes consultem os recursos necessários no banco de dados usando uma sintaxe de pesquisa específica. Para recursos armazenados em serviços de diretório, eles podem conter informações de atributos ricas, como nome, e-mail, número de telefone de um usuário, etc. Para servidores LDAP específicos, geralmente existem alguns modelos embutidos para especificar os requisitos para chaves e valores de atributos, garantindo a precisão dos dados.

Em ambientes corporativos, as aplicações de LDAP/Active Directory são particularmente difundidas. As empresas podem armazenar informações dos funcionários em uma estrutura hierárquica baseada em seus departamentos, e cada recurso "usuário" pode armazenar informações básicas e credenciais dos funcionários.

Integração do LDAP em Aplicações

Para muitas aplicações existentes, a integração do protocolo LDAP tornou-se uma característica importante, seja embutida ou implementada com base em mecanismos de extensão. Tomando o Apache APISIX como exemplo, ele implementou com sucesso a integração do LDAP por meio de um mecanismo de plugin flexível. Essa integração permite que os clientes enviem nomes de usuário e senhas no formato de autenticação básica, então consultem e validem as credenciais do usuário no servidor LDAP, protegendo efetivamente as solicitações de API.

Nas aplicações e serviços desenvolvidos pelos engenheiros, o protocolo LDAP também pode ser utilizado para implementar funções de gerenciamento e autenticação de usuários. Usando bibliotecas cliente LDAP fornecidas por linguagens de programação específicas, é fácil conectar-se a serviços LDAP. Uma vez estabelecida a conexão, a API de Pesquisa pode ser usada para consultar recursos no diretório e recuperar os atributos de usuário necessários.

LDAP

Prós e Contras do LDAP

Prós

  • Armazenamento centralizado e consulta eficiente: Os dados são armazenados centralmente em serviços de diretório, e sua estrutura organizacional aumenta muito a velocidade de consulta, facilitando o tratamento de grandes volumes de solicitações de leitura.

  • Estrutura de árvore intuitiva: A estrutura de árvore dos serviços de diretório se assemelha muito à estrutura organizacional do mundo real, tornando os recursos convenientemente indexados em nós folha, alinhando-se à intuição dos usuários.

  • Integração ampla em aplicações: Devido à sua maturidade e estabilidade, o protocolo LDAP fornece suporte de integração embutido em muitos softwares.

Contras

  • Protocolo desatualizado: O protocolo LDAP foi projetado em dias anteriores, usando codificação ASN.1, que difere significativamente do formato JSON mainstream hoje, tornando a integração um tanto desafiadora.

  • Funcionalidade limitada e problemas de compatibilidade: O protocolo em si tem funcionalidade limitada, levando alguns softwares de servidor LDAP a estenderem por meios não padronizados, o que pode afetar a compatibilidade entre diferentes servidores LDAP.

  • Configuração complexa e desafios de segurança: A configuração do servidor LDAP envolve muitos fatores de segurança, como TLS e controle de acesso a dados, exigindo experiência rica para garantir a configuração correta, caso contrário, arriscando vazamento de dados.

  • Dificuldade de implementação da aplicação: Do ponto de vista da aplicação, acessar servidores LDAP é semelhante a acessar bancos de dados, exigindo o uso de APIs de nível inferior como Search para acesso a dados, impondo altas demandas aos desenvolvedores de aplicações.

A Modernização do LDAP

Embora o protocolo LDAP possa parecer um tanto desatualizado no ambiente tecnológico atual, ele ainda é amplamente suportado por muitos softwares mainstream como um padrão clássico. Muitas empresas ainda dependem do LDAP para gerenciar vários recursos dentro da organização, e sua estabilidade e confiabilidade foram verificadas em aplicações práticas.

Para superar algumas limitações do protocolo LDAP em aplicações modernas, surgiram alguns produtos de middleware. Esses middleware encapsulam o protocolo LDAP internamente e fornecem interfaces de protocolo mais modernas e amigáveis, como OpenID Connect:

Eles lidam com conversão e adaptação de protocolo, fornecendo protocolos modernos para reduzir a carga de trabalho de integração para desenvolvedores de aplicações.

Esses produtos de middleware são responsáveis pela conversão e adaptação de protocolo, fornecendo aos desenvolvedores de aplicações métodos de integração mais modernos e eficientes, reduzindo efetivamente a carga de trabalho necessária para integrar o LDAP.

Mecanismo de Autenticação de Identidade Baseado em HTTP

No campo da autenticação de identidade, os protocolos baseados em HTTP desempenham um papel crucial. OpenID Connect (OIDC), SAML e CAS estão entre os representantes.

OpenID Connect

OpenID Connect é uma extensão do OAuth 2, fornecendo não apenas capacidades de autorização, mas também aprimorando as capacidades de autenticação de identidade. Comparado à funcionalidade limitada do OAuth 2, o OIDC oferece recursos mais ricos, como a funcionalidade central id_token e os padrões de descoberta OIDC.

A vantagem do OIDC está em sua ampla aplicação e ecossistema rico. Implementações maduras de servidor e cliente estão disponíveis em várias linguagens de programação, facilitando a integração e implantação. Além disso, o OIDC pode ser combinado com outras tecnologias, como o uso de JSON Web Tokens (JWT) como tokens, aproveitando sua natureza sem estado para reduzir a carga nos serviços de autenticação de identidade.

CAS

CAS (Central Authentication Service) é um protocolo de autenticação de identidade amplamente usado em cenários web, usado para implementar funcionalidade de single sign-on. O protocolo CAS é relativamente simples em design e fácil de integrar em várias aplicações. Além disso, ele pode ser usado em produção. Vale notar que plataformas de gerenciamento de autenticação de identidade como Keycloak também suportam o protocolo CAS, expandindo ainda mais seu escopo de aplicação.

SAML

SAML (Security Assertion Markup Language) é um protocolo de autenticação de identidade de longa data, com a versão atual SAML 2.0 lançada em 2005. O protocolo usa XML como o método de codificação para comunicação entre serviços e define estruturas de dados únicas. No entanto, devido à implementação relativamente complexa do SAML e seu uso menos intuitivo e direto, suas vantagens não são tão aparentes quando comparadas a protocolos modernos de autenticação de identidade como OIDC e CAS.

No entanto, soluções de gerenciamento de identidade e acesso como Keycloak ainda fornecem implementações de servidor SAML para atender às necessidades de autenticação de identidade em cenários específicos.

Cyber Security

Sincronização e Gerenciamento de Identidade do Usuário

Considere um cenário comum: uma empresa fornece vários sistemas de aplicação internos para seus funcionários e adota single sign-on para melhorar a experiência do usuário. No entanto, sempre que um novo funcionário entra ou um antigo sai, os administradores de TI precisam criar ou excluir manualmente contas em vários sistemas, um processo que não só é trabalhoso, mas também acompanhado de potenciais riscos de segurança.

Para resolver esse problema, os administradores de TI precisam urgentemente de uma ferramenta padronizada e automatizada de gerenciamento de contas de usuário. É nesse contexto que o padrão SCIM (System for Cross-domain Identity Management) emerge.

O padrão SCIM define uma série de APIs REST específicas projetadas para alcançar interoperabilidade perfeita entre IDPs (provedores de identidade) e sistemas de aplicação ou serviços SaaS. Por meio dessas APIs, os usuários podem configurar contas automaticamente, simplificando muito o processo de criação, atualização e exclusão de contas.

Desde sua introdução, o protocolo SCIM tem sido amplamente adotado e aplicado. Por exemplo, soluções conhecidas de gerenciamento de identidade como Microsoft Entra ID (anteriormente Azure Active Directory) e Okta suportam o protocolo SCIM. Além disso, plataformas de gerenciamento de identidade e acesso de código aberto como Keycloak também fornecem extensões de servidor/cliente SCIM, enriquecendo ainda mais seus cenários de aplicação.

Conclusão

Este artigo delineia brevemente as principais tecnologias amplamente usadas em cenários de autenticação de identidade. No processo de construção de serviços de autenticação de identidade eficientes e seguros, essas soluções técnicas maduras desempenham um papel crucial. Elas não só simplificam muito o trabalho de integração e melhoram a eficiência do trabalho, mas também reduzem efetivamente os riscos de segurança, garantindo a segurança dos dados da empresa e das informações do usuário. Ao aproveitar essas soluções tecnológicas, podemos atender melhor às demandas da autenticação de identidade moderna, proporcionando uma experiência mais conveniente e segura tanto para as empresas quanto para os usuários.

Tags: