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 do AD, os usuários fornecem seu nome de usuário e senha do AD para App Builder. App Builder usa LDAP para validar as credenciais fornecidas pelo usuário em relação a um armazenamento do AD.
As implantações modernas devem favorecer SAML single sign-on (SSO) e WS-Federação sobre autenticação do AD. O SAML SSO e o 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 honra 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 do SAML SSO e do 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 suporta provisionamento de usuários e grupos. Usuários e grupos são registrados usando seus nomes de conta SAM.
Parâmetros
Parâmetro | Valor Padrão | Exemplo | Obrigatório | Descrição |
---|---|---|---|---|
Contêiner | 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 Domain, Machine e ApplicationDirectory. | ||
Domínio | example.com example.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 do AD. Veja abaixo para mais informações. |
Por padrão, App Builder conectará aos controladores de domínio do AD como o usuário do pool de aplicativos do IIS. Isso pode não funcionar em todas as situações, principalmente se o servidor web não estiver hospedado no domínio do 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 associação ao grupo de segurança "Usuários do Domínio" é suficiente.
- A conta pode pertencer à Unidade Organizacional identificada pela especificação do Contêiner, mas não precisa ser.
Reivindicações
O provedor do Active Directory mapeia as seguintes propriedades UserPrincipal para tipos de declaração:
- SamAccountName
- Nome
- Nome de exibição
- Endereço de email
- Número de telefone de voz
Informações Adicionais
Para validar credenciais em um armazenamento do Active Directory (AD), App Builder 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 limites de domínio. Acrescentar o número da porta ao domínio (por exemplo, example.com:389) pode melhorar o desempenho.
Solução de Problemas
Erro: "Não há tal objeto no servidor."
Este erro pode significar que a especificação do Container está incorreta. Pode se referir a uma Unidade Organizacional inexistente. Se estiver trabalhando com Unidades Organizacionais aninhadas, 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 Container 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 App Builder não conseguiu se conectar ao controlador de domínio do Active Directory. Verifique a propriedade Domain.
Os clientes interagem com o Active Directory via LDAP. Conforme observado no seguinte artigo da Base de Conhecimento da 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 a partir do App Builder servidor web.
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 ativo ou endereço IP do servidor do 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. A seguir está um exemplo de uma 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 por App Builder para consultar o controlador de domínio do Active Directory é inválido. Verifique as propriedades UserName e Password.
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. Isso 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 User Principal Name (user@example.com) ou Down-Level Logon Name (EXAMPLE\user). 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 autenticar com uma conta que não corresponde à especificação do Container. Por exemplo, a especificação do 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.