O que é o ADFS (Serviços de Federação do Active Directory)?

77

Foi-me dito que nosso aplicativo PHP pode precisar dar suporte à autenticação usando o ADFS.

  1. Para uma pessoa que não é da Microsoft, o que é o ADFS?

  2. Como isso difere em coisas como LDAP?

  3. 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?

  4. Os servidores ADFS normalmente estão acessíveis na Internet (enquanto os controladores de domínio AD corporativos não seriam)?

Eu tentei ler alguns dos documentos da Technet, mas está cheio de fala da Microsoft que não é muito útil.

A Wikipedia é melhor (veja abaixo), mas talvez uma parte da comunidade ServerFault possa preencher algumas das lacunas.

Os Serviços de Federação do Active Directory (ADFS) são um componente de software desenvolvido pela Microsoft que pode ser instalado nos sistemas operacionais Windows Server para fornecer aos usuários acesso de logon único aos sistemas e aplicativos localizados nos limites da organização. 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 identidades é estabelecida entre duas organizações, estabelecendo a confiança entre duas regiões de segurança. Um servidor de federação de um lado (o lado de Contas) autentica o usuário pelos meios padrão nos Serviços de Domínio Active Directory e emite um token que contém uma série de declarações sobre o usuário, incluindo sua identidade. Por outro lado, no lado Recursos, outro servidor de federação valida o token e emite outro token para os servidores locais aceitarem a identidade reivindicada. Isso permite que um sistema forneça acesso controlado a seus recursos ou serviços a um usuário pertencente 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 do usuário.

Na prática, essa abordagem é normalmente percebida pelo usuário da seguinte maneira:

  1. O usuário faz login no PC local (como faria normalmente ao iniciar o trabalho pela manhã)
  2. 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
  3. O usuário navega para o site da extranet da empresa parceira - por exemplo: http://example.com
  4. 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 o AD FS
  5. 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

Simon East
fonte
Eu achei esses artigos e este vídeo úteis para fornecer uma visão geral.
Simon East
Reaces forneceu uma excelente resposta. As únicas informações adicionais que eu acrescentaria é que talvez valha a pena entender o protocolo WS-Federation e o SAML (Security Assertion Markup Language), que são os padrões que o ADFS implementa. Aqui estão alguns vídeos que achei úteis para entender esses conceitos (bastante complexos). Infelizmente, eles contêm tanto material que não posso incluí-lo aqui. ! [Miniatura do vídeo Noções básicas sobre SAML e Logon único 101 no YouTube] ( youtube.com/watch?v=gUmMcecHN9s ) [! [Miniatura do vídeo] (http
Simon East
Também tive problemas para entender o ADFS. Eu precisava de uma explicação desde o início (eu não sou uma pessoa do AD). Este vídeo incluído nas séries mencionadas nos comentários aqui foi muito útil para mim. É aqui que qualquer pessoa nova e sem experiência com o ADFS deve iniciar e continuar com o restante dos vídeos da série. Espero que ajude. youtube.com/…
Mauricio Zaragoza
1
Desculpe pessoal, um moderador excluiu minha resposta com os vídeos úteis e fez um comentário acima, mas agora está quebrado. Frustrante.
Simon East

Respostas:

97

Para uma pessoa que não é da Microsoft, o que é o ADFS?

O ADFS é a solução da Microsoft para Logon único e autenticação baseada na Web.

É usado principalmente para fornecer um único conjunto de credenciais que podem acessar uma variedade de sites não necessariamente hospedados no mesmo domínio.

Como isso difere em coisas como LDAP?

LDAP:

  • Comunica usando TCP / UDP na porta 389 (ou porta 636 para LDAPS)
  • Contém comandos para pesquisar / recuperar / adicionar / excluir / modificar usuários, perfis e outras entradas de diretório
  • Pode não ser realizada diretamente por um navegador web, no entanto autenticação HTTP pode ser traduzido para LDAP utilizando coisas como Apache do mod_authnz_ldap.
  • Quando usado para autenticação de sites de terceiros, exige que o nome de usuário e a senha sejam fornecidos a terceiros, o que não é ideal para segurança.
  • É mais um padrão aberto e possui inúmeras implementações do Linux.

ADFS:

  • Melhor projetado para a Web, pois se comunica através de HTTPS padrão
  • Segue um processo mais seguro semelhante (mas não exato) ao OAuth, em que o nome de usuário / senha original são fornecidos diretamente ao servidor ADFS da organização (ou um proxy, mas não o terceiro) que, se válido, retorna um token exclusivo que pode ser usado para acessar um site de terceiros.
  • Embora use alguns padrões abertos (HTTPS, SAML etc.), é específico da Microsoft e requer o Internet Information Services (IIS), que é executado apenas em servidores Windows.

Veja também esta resposta sobre o assunto.

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?

Ele funciona com um único site (site A) que hospeda os servidores proxy do ADFS / ADFS, que tem acesso às credenciais (geralmente comunicando-se com um controlador de domínio do Active Directory). Em seguida, é atribuída uma confiança entre outros sites (sites B e C) que exigem autenticação através do ADFS.

Quando um usuário tenta acessar o site B em seu navegador, o site o redireciona para o site proxy do ADFS (site A), que solicita seu nome de usuário e senha, os autentica, devolve 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 no site proxy do ADFS. Se os cookies corretos existirem, o usuário não precisará digitar sua senha novamente, mas será redirecionado instantaneamente de volta ao site C com um token.

O ADFS pode ser configurado com reivindicações (ou permissões) específicas para o usuário, para fins de autorização. Portanto, ele pode servir aos dois papéis. (Observe a diferença entre autenticação e autorização .)

Algumas pessoas preferem não usá-lo para autorização, mas mantêm 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ários, enquanto no cenário em que o ADFS lida com ambos, apenas o ADFS precisa estar ciente dos usuários.

Os servidores ADFS normalmente estão acessíveis na Internet (enquanto os controladores de domínio AD corporativos não seriam)?

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 proxy do ADFS é aquele geralmente acessível pela Internet. No entanto, o ADFS em si não é. O ADFS geralmente é um servidor separado do proxy do ADFS.

  • Servidor ADFS Server
    vinculado às credenciais e que possui a configuração de declarações e as relações de confiança. Geralmente não é acessível ao público.
  • Servidor
    servidor proxy do ADFS que hospeda a instância do IIS que possui as páginas de logon dos sites que exigem autenticação. Comunica-se de volta ao ADFS ao exigir autenticação. Geralmente acessível ao público.
Reaces
fonte
11
Para esclarecer: O servidor proxy do ADFS deve ser executado no IIS (Windows). No entanto, os sites clientes (B & C) podem executar qualquer sistema operacional e servidor web, incluindo Linux.
Olli
Muito útil, acabou de criar uma conta para folhear isso.
Juan
Expandindo a resposta do @Reaces, o ADFS 4.0 no Windows Server 2016 oferece suporte total ao OAuth / OpenId Connect.
Mohammad Reza Sadreddini
@MohammadRezaSadreddini Sinta-se livre para editar a resposta para expandi-la.
Reaces em