Ir para o conteúdo

Provedor de Segurança - Active Directory

O provedor de segurança do Active Directory (AD) é um esquema de autenticação baseado em formulários. Ao usar o provedor de segurança AD, os usuários fornecem seu nome de usuário e senha AD ao Vinyl. O Vinyl usa LDAP para validar as credenciais fornecidas pelo usuário em um armazenamento AD.

As implantações modernas devem favorecer SAML Single Sign-On (SSO) e WS-Federation pela autenticação do AD. SAML SSO e WS-Federation oferecem maior segurança na medida em que os usuários não são obrigados a fornecer suas credenciais a um aplicativo de externo. Como o AD não respeita um contexto de autenticação existente, a autenticação do AD não é um esquema SSO adequado. Por esse motivo, o SAML SSO e o WS-Federation geralmente oferecem melhor usabilidade porque não exigem que o usuário insira novamente suas credenciais. Por fim, como os tokens de segurança SAML SSO e WS-Federation são intermediados pelo navegador por HTTP, eles não exigem que um aplicativo de externo tenha acesso direto aos controladores de domínio do AD. Isso torna o SAML SSO e o WS-Federation mais adequados para implantações em nuvem.

Configuração

O provedor de segurança do AD oferece suporte ao provisionamento de usuários e grupos. Os usuários e grupos são registrados usando o nome da conta SAM.

Parâmetros

Parâmetro Valor padrão Exemplo Obrigatório Descrição
Recipiente DC=exemplo,DC=com Não Especificação do contêiner AD LDAP.
Contexto Domínio Tipo de contexto do AD. Os valores válidos incluem Domínio, Máquina e ApplicationDirectory.
Domínio exemplo.com
exemplo.com:389
Sim Nome de domínio do Active Directory (AD). Pode incluir um número de porta opcional.
Senha Não Senha da conta AD. Veja abaixo para mais informações.
Nome de usuário Não Nome de usuário da conta AD. Veja abaixo para mais informações.

Por padrão, o Vinyl se conectará aos controladores de domínio AD como usuário do pool de aplicativos IIS. Isso pode não funcionar em todas as situações, principalmente se o servidor web não estiver hospedado no domínio AD. Nesse caso, você precisará fornecer o nome de usuário e a senha de uma conta no domínio. Ao criar uma conta, considere o seguinte:

  • A conta precisa ter acesso de leitura à árvore do AD: a participação no grupo de segurança "Usuários do Domínio" é suficiente.
  • A conta pode pertencer à Unidade Organizacional identificada pela especificação do Container, mas não precisa ser assim.

Reivindicações

O provedor do Active Directory mapeia as seguintes propriedades UserPrincipal para tipos de declaração:

  • SamContaNome
  • Nome
  • Nome de exibição
  • Endereço de email
  • VozTelefoneNúmero

Informações Adicionais

Para validar credenciais em um armazenamento do Active Directory (AD), o Vinyl precisará ser capaz de se conectar aos controladores de domínio do AD via LDAP. Tradicionalmente, isso ocorre na porta 389.

Pode ocorrer um atraso de 20 segundos ou mais ao cruzar os limites do domínio. Anexar o número da porta ao domínio (por exemplo, exemplo.com:389) pode melhorar o desempenho.

Solução de Problemas

Erro: "Não existe tal objeto no servidor."

Este erro pode significar que a especificação do Container está incorreta. Pode referir-se a uma Unidade Organizacional inexistente. Se estiver trabalhando com unidades organizacionais aninhadas, isso pode significar que a ordem está incorreta. As Unidades Organizacionais devem ser fornecidas na ordem inversa. Por exemplo, dado o seguinte caminho:

\Sales\North America

A especificação correta do contêiner seria:

OU=North America,OU=Sales,DC=example,DC=com

Observe que os nomes das unidades organizacionais não diferenciam maiúsculas de minúsculas.

Erro: "O servidor não pôde ser contatado." ou "O servidor LDAP não está disponível."

Este erro indica que o Vinyl não conseguiu se conectar ao controlador de domínio do Active Directory. Verifique a propriedade Domínio.

Os clientes fazem interface com o Active Directory via LDAP. Conforme observado no seguinte artigo da Base de Conhecimento Microsoft, o servidor LDAP se comunica na porta 389 usando os protocolos UDP e TCP.

https://support.microsoft.com/en-us/help/832017/service-overview-and-network-port-requirements-for-windows

A ferramenta Portqry pode ser usada para testar a conectividade com o Active Directory:

https://support.microsoft.com/en-us/help/816103/how-to-use-portqry-to-troubleshoot-active-directory-connectivity-issue

A ferramenta pode ser baixada do site da Microsoft:

https://www.microsoft.com/en-us/download/confirmation.aspx?id=17148

Observe que a ferramenta Portqry deve ser executada no servidor web do Vinyl.

Para testar a conectividade com a porta 389 usando UDP, execute o seguinte comando:

> portqry -n ad.example.com -e 389 -p udp

Substitua “ad.example.com” pelo nome ou endereço IP do servidor Active Directory.

Para testar a conectividade com a porta 389 usando TCP:

> portqry -n ad.example.com -e 389 -p tcp

Se os testes forem bem-sucedidos, você verá uma resposta de consultar LDAP incluindo a data e hora atuais, bem como várias propriedades do Active Directory. Veja a seguir um exemplo de resposta de consultar LDAP bem-sucedida:

currentdate: 10/20/2018 11:22:33 (unadjusted GMT)
subschemaSubentry: CN=Aggregate,CN=Schema,CN=Configuration,DC=example,DC=com
dsServiceName: CN=NTDS Settings,CN=SERVER,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com
namingContexts: DC=example,DC=com
defaultNamingContext: DC=example,DC=com
schemaNamingContext: CN=Schema,CN=Configuration,DC=example,DC=com
configurationNamingContext: CN=Configuration,DC=example,DC=com
rootDomainNamingContext: DC=example,DC=com
supportedControl: 1.2.840.113556.1.4.319
supportedLDAPVersion: 3
supportedLDAPPolicies: MaxPoolThreads
highestCommittedUSN: 249947
supportedSASLMechanisms: GSSAPI
dnsHostName: SERVER.example.com
ldapServiceName: example.com:server$@EXAMPLE.COM
serverName: CN=SERVER,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=example,DC=com
supportedCapabilities: 1.2.840.113556.1.4.800
isSynchronized: TRUE
isGlobalCatalogReady: TRUE
domainFunctionality: 6
forestFunctionality: 6
domainControllerFunctionality: 6

Erro: "O nome de usuário ou senha está incorreto."

Se o arquivo de log contiver o erro "O nome de usuário ou senha está incorreto", isso pode significar que o nome de usuário ou senha usado pelo Vinyl para consultar o controlador de domínio do Active Directory é inválido. Verifique as propriedades Nome de usuário e Senha.

Erro: "O nome de usuário ou a senha estão incorretos."

Um usuário pode ver o erro normal "O nome de usuário ou a senha estão incorretos" ao fazer login, mesmo que tenha fornecido credenciais válidas. Isto pode indicar que o nome de usuário foi fornecido no formato errado.

Ao fazer login, não forneça o nome de usuário nos formatos Nome principal do usuário (usuário@example.com) ou Nome de logon de nível inferior (EXEMPLO\usuário). Em vez disso, forneça o nome de usuário não qualificado.

Erro: "O nome de usuário fornecido não corresponde ao nome da conta SAM de um usuário principal."

Este erro indica que o usuário está tentando se autenticar com uma conta que não corresponde à especificação do Container. Por exemplo, a especificação Container pode restringir o acesso a uma determinada Unidade Organizacional. Nesse caso, esse erro indicaria que a conta do usuário não pertence à unidade organizacional.