Então me disseram que nosso aplicativo PHP pode precisar dar suporte à autenticação usando ADFS.
Para uma pessoa que não é da Microsoft, o que é ADFS?
Como ele difere de coisas como LDAP?
Como funciona? Que tipo de informação seria incluída em uma solicitação típica para um servidor ADFS? Ele foi projetado para autenticação e autorização?
Os servidores ADFS normalmente são acessíveis pela Internet (ao passo que os controladores de domínio AD corporativos não seriam)?
Eu tentei ler alguns dos documentos do Technet, mas está cheio de linguagem da Microsoft que não é muito útil.
A Wikipedia é melhor (veja abaixo), mas talvez alguns membros da comunidade ServerFault possam preencher algumas das lacunas.
O Active Directory Federation Services (ADFS) é um componente de software desenvolvido pela Microsoft que pode ser instalado em sistemas operacionais Windows Server para fornecer aos usuários acesso de logon único a sistemas e aplicativos localizados além dos limites organizacionais. Ele usa um modelo de autorização de controle de acesso baseado em declarações para manter a segurança do aplicativo e implementar a identidade federada.
A autenticação baseada em declarações é o processo de autenticação de um usuário com base em um conjunto de declarações sobre sua identidade contida em um token confiável.
No ADFS, a federação de identidade é estabelecida entre duas organizações estabelecendo confiança entre dois domínios de segurança. Um servidor de federação de um lado (o lado das Contas) autentica o usuário pelos meios padrão nos Serviços de Domínio Active Directory e, em seguida, emite um token contendo uma série de declarações sobre o usuário, incluindo sua identidade. Por outro lado, do lado de Recursos, outro servidor de federação valida o token e emite outro token para que os servidores locais aceitem a identidade reivindicada. Isso permite que um sistema forneça acesso controlado a seus recursos ou serviços a um usuário que pertença a outro domínio de segurança sem exigir que o usuário se autentique diretamente no sistema e sem que os dois sistemas compartilhem um banco de dados de identidades ou senhas de usuários.
Na prática, esta abordagem é tipicamente percebida pelo usuário da seguinte forma:
- O usuário faz login em seu PC local (como normalmente faria ao iniciar o trabalho pela manhã)
- O usuário precisa obter informações no site da extranet de uma empresa parceira - por exemplo, para obter preços ou detalhes do produto
- O usuário navega para o site da extranet da empresa parceira - por exemplo: http://example.com
- O site do parceiro agora não exige que nenhuma senha seja digitada - em vez disso, as credenciais do usuário são passadas para o site da extranet do parceiro usando AD FS
- O usuário agora está logado no site do parceiro e pode interagir com o site 'logado'
De https://en.wikipedia.org/wiki/Active_Directory_Federation_Services
ADFS é a solução da Microsoft para Single Sign On e autenticação baseada na web.
Ele é usado principalmente para fornecer um único conjunto de credenciais que pode acessar uma variedade de sites não necessariamente hospedados no mesmo domínio.
LDAP:
mod_authnz_ldap
.ADFS:
Veja também esta resposta sobre o assunto.
Ele funciona por ter um único site (site A) que hospeda os servidores proxy ADFS/ADFS, que tem acesso às credenciais (geralmente por comunicação com um Controlador de Domínio Active Directory). Em seguida, é fornecida uma relação de confiança entre outros sites (sites B e C) que exigem autenticação por meio do ADFS.
Quando um usuário tenta acessar o site B em seu navegador, o site redireciona o usuário para o site ADFS-proxy (site A) que solicita seu nome de usuário e senha, os autentica, retorna um conjunto de cookies para lembrá-los e os redireciona de volta ao site B, junto com um token de acesso.
Se o usuário tentar visitar o site C, ele também será redirecionado para o site A para autenticação do site ADFS-proxy. Se os cookies corretos existirem, o usuário não precisará digitar sua senha novamente, mas será instantaneamente redirecionado de volta ao site C com um token.
O ADFS pode ser configurado com declarações (ou permissões) específicas para o usuário, para fins de autorização. Portanto, pode servir a ambos os papéis. (Observe a diferença entre autenticação e autorização .)
Algumas pessoas preferem não usá-lo para autorização, mas manter o gerenciamento de permissões no site de terceiros. A desvantagem óbvia é que ambos os sites A e B precisam acompanhar as contas de usuário, enquanto no cenário em que o ADFS lida com ambos, apenas o ADFS precisa estar ciente dos usuários.
Sim, quase sempre. O ADFS é baseado na noção de que será usado principalmente para autenticação de sites. E é construído em torno do IIS.
O site ADFS-proxy é aquele que geralmente é acessível pela Internet. No entanto, o próprio ADFS não é. O ADFS geralmente é um servidor separado do proxy ADFS.
que se vincula às credenciais e tem a configuração de declarações, bem como as relações de confiança. Geralmente não acessível ao público.
que hospeda a instância do IIS que tem as páginas de logon para os sites que exigem autenticação. Comunica-se de volta ao ADFS ao exigir autenticação. Geralmente acessível ao público.