Configurar NTLM/Kerberos SSO Single Sign-On para UBUNTU/RHEL/CentOS
Visão geral
A extensão Kerberos SSO facilita a obtenção de um tíquete de concessão de tíquete Kerberos (TGT) do Active Directory da sua organização ou de outro domínio de provedor de identidade, permitindo que os usuários se autentiquem em recursos como sites, aplicativos e servidores de arquivos.
Etapas para integrar o Kerberos SSO LDAP para logon único (SSO)
Etapa 1: instalar bibliotecas do cliente Kerberos no servidor Web
Para UBUNTU:
- Use o seguinte comando no seu terminal para instalar as bibliotecas do cliente Kerberos.
sudo apt-get install krb5-user
Para RHEL/CentOS:
- Use o seguinte comando no seu terminal para instalar as bibliotecas do cliente Kerberos.
yum install krb5-workstation krb5-libs krb5-auth-dialog
Etapa 2: Configurar o domínio do Active Directory no arquivo de configuração Kerberos
As etapas a seguir são usadas para configurar os domínios do Active Directory no arquivo de configuração Kerberos:
- Abra e edite o arquivo /etc/krb5.conf.
- Adicione o seguinte trecho de configuração ao arquivo krb5.conf.
- Salve o arquivo.
EXAMPLE.ORG= { kdc = <AD DOMAIN CONTROLLER IP/DNS> :88 }
OBSERVAÇÃO: Substituir o CONTROLADOR DE DOMÍNIO DE ANÚNCIOS IP/DNS com seu endereço IP/DNS. Certifique-se EXEMPLO.ORG deve estar em letras maiúsculas.
Substituir o EXEMPLO.ORG com o nome de domínio do Active Directory.
E certifique-se de que a porta 88 no Controlador de Domínio do AD esteja acessível a partir deste servidor.
Etapa 3: Instale o módulo auth_kerb para Apache
Para UBUNTU:
- Use o seguinte comando para instalar o módulo auth_kerb para o Apache.
- Depois que o módulo auth_kerb estiver instalado, ele precisa ser habilitado por meio do seguinte comando.
- Após a ativação, reinicie o Apache para que a ação entre em vigor.
sudo apt-get install libapache2-mod-auth-kerb
a2enmod auth_kerb
Para RHEL/CentOS:
- Use o seguinte comando para instalar o módulo auth_kerb para o Apache.
- Reinicie o Apache para que as alterações entrem em vigor.
yum install mod_auth_kerb
Etapa 4: Crie o arquivo Keytab no controlador de domínio do AD
- No Controlador de Domínio do AD, execute o seguinte comando para criar o arquivo Keytab.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.ORG -pass PASSWORD
-mapuser <svc@EXAMPLE.ORG> -Ptype KRB5_NT_PRINCIPAL -out "<PATH>\spn.keytab"
OBSERVAÇÃO: Certifique-se de que EXAMPLE.ORG esteja em letras maiúsculas.
| Nome do host do servidor: | É o nome do host do site hospedado no servidor. |
| Nome do host do servidor: | É o nome do host do site hospedado no servidor. |
| EXEMPLO.ORG: | É o nome de domínio do Active Directory. |
| SENHA: | É a senha da conta de serviço usada acima. |
| svc@EXAMPLE.ORG: | É uma conta de serviço no Active Directory. |
| Caminho: | Caminho para um local que armazenará o arquivo keytab. |
- A conta de serviço tem alguns pré-requisitos:
- A senha da conta deve ter uma senha definida como Não expirado.
- A conta deve ser confiável para delegação.
- Copie o Livro arquivo do Controlador de Domínio do AD para o servidor web hospedado no Apache.
OBSERVAÇÃO: O comando acima cria um arquivo keytab. Ele precisa ser salvo no servidor. O usuário que executa o Apache deve ter acesso total a este arquivo. O usuário deve ter permissão para acessar o arquivo keytab.
Etapa 5: configurar o Kerberos SSO para o diretório do site
Para UBUNTU:
- Edite o arquivo /etc/apache2/sites-enabled/000-default.conf.
- Adicione a seguinte seção no diretório do site.
<Directory "/placeholder"> AuthType Kerberos KrbAuthRealms EXAMPLE.ORG KrbServiceName HTTP Krb5Keytab <PATH TO KEYTAB> KrbMethodNegotiate on KrbMethodK5Passwd on require valid-user </Directory>
Para RHEL/CentOS:
- Edite o arquivo de configuração auth_kerb.conf na pasta /etc/httpd/conf.d/.
- Adicione a seguinte seção no diretório do site.
LoadModule auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so <Directory "/placeholder"> AuthType Kerberos KrbAuthRealms EXAMPLE.ORG KrbServiceName HTTP Krb5Keytab <PATH TO KEYTAB> KrbMethodNegotiate on KrbMethodK5Passwd on require valid-user </Directory>
OBSERVAÇÃO: Certifique-se de que EXAMPLE.ORG esteja em letras maiúsculas.
A seguir estão os componentes da configuração acima:
| EXEMPLO.ORG: | Este é o domínio do Active Directory conforme configurado em krb5.conf. |
| CAMINHO PARA KEYTAB: | Caminho acessível para o keytab neste servidor. |
- Após essa configuração, o Apache precisa ser reiniciado para que as alterações tenham efeito.
guia de solução de problemas
Estas são as mensagens de erro mais comuns:
- Permissões de sistema de arquivo erradas para /etc/krb5.keytab, ou seja, não legível para o usuário Linux do servidor web.
- Para alterar as permissões do sistema de arquivos, use $ chmod 400 nome do arquivo.
- Principal de serviço ausente (possivelmente HTTP/webserver.yourdomain.com@YOURDOMAIN.COM) em /etc/krb5.keytab.
- O site não está na zona "Intranet Local" no IE ou o IE está configurado incorretamente, consulte A autenticação usa NTLM em vez de Kerberos.
- Senha de máquina ou kvno errada em /etc/krb5.keytab → recrie o keytab usando as informações corretas.
- Problema com o cache de tickets Kerberos local na sua estação de trabalho, use Kerbtray.exe para limpar o cache de tickets e abrir o site no IE novamente.
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Permission denied).
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Key table entry not found).
Warning: received token seems to be NTLM, which isn't supported by the Kerberos module. Check your IE configuration.
gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)
gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, ).
