Guia para configurar o Kerberos Single Sign-On (SSO)
Visão geral
O Kerberos é um protocolo de autenticação baseado em criptografia que protege o acesso a aplicativos. Este protocolo foi projetado para fornecer autenticação segura em redes inseguras. A ideia principal por trás do Kerberos é autenticar usuários, impedindo que senhas sejam enviadas pela internet.
Integração LDAP/Active Directory descomplicada para vídeos WordPress.
Termos do Kerberos:
Kerberos: Kerberos é um protocolo de autenticação que suporta o conceito de Single Sign-On (SSO). No caso do HTTP, o suporte para Kerberos geralmente é fornecido usando o mecanismo de autenticação "SPNEGO".
Domínio Kerberos: Um domínio administrativo para autenticação é designado pelo termo "realm". Seu objetivo é definir as restrições sobre quando um servidor de autenticação pode autenticar um usuário, host ou serviço. Isso não implica que um usuário e um serviço devam ser membros do mesmo realm para que a autenticação ocorra: se os dois objetos estiverem conectados por meio de uma conexão de confiança, mesmo pertencendo a realms diferentes, a autenticação ainda poderá ocorrer.
Principal: Em um sistema Kerberos, um Principal Kerberos representa uma identidade distinta para a qual o Kerberos pode emitir tickets de acesso a serviços compatíveis com Kerberos. O separador "/" é usado para separar os vários componentes que compõem os nomes dos principais. O caractere "@" pode ser usado para identificar um domínio como o elemento final do nome. Se nenhum domínio for especificado, presume-se que o Principal pertença ao domínio padrão definido no arquivo krb5.conf.
Clientes/Usuários: Um processo que acessa um serviço em nome de um usuário. Pode haver vários clientes ou usuários em um domínio.
Serviço: Algo a que o usuário deseja ter acesso.
SSO: Single Sign-On (Autenticação Única) é um procedimento que permite ao usuário fazer login apenas uma vez e acessar diversos serviços após concluir a autenticação. Após o login em um serviço principal, isso implica na autenticação em todos os serviços aos quais o usuário concedeu autorização. O SSO oferece diversas vantagens, uma das quais é evitar o processo tedioso de validar repetidamente a identidade usando senhas ou outros sistemas de autenticação.
GSSAPI: Os programas podem acessar serviços de segurança por meio da Interface de Programação de Aplicativos de Serviço de Segurança Genérica (GSSAPI), que é uma interface de programação de aplicativos (API). O GSSAPI é um padrão da IETF. Ele não oferece segurança por si só. Em vez disso, implementações do GSSAPI são oferecidas por provedores de serviços de segurança. A troca de mensagens opacas (tokens), que oculta os detalhes da implementação do aplicativo de nível superior, é a característica distintiva dos aplicativos GSSAPI.
SPNEGO: O software cliente-servidor utiliza o Mecanismo de Negociação GSSAPI Simples e Protegido, frequentemente chamado de "spen-go", para negociar a seleção da tecnologia de segurança. Quando um aplicativo cliente precisa fazer login em um servidor remoto, mas nenhuma das partes tem certeza de quais protocolos de autenticação a outra suporta, o SPNEGO é empregado. O pseudo-mecanismo utiliza um protocolo para identificar os mecanismos GSSAPI comuns disponíveis, escolhe um e, em seguida, atribui todas as ações de segurança subsequentes a esse mecanismo escolhido.
KDC: Um Centro de Distribuição de Chaves é um serviço de rede que fornece tickets e chaves de sessão temporárias; ou uma instância desse serviço ou o host no qual ele é executado. O KDC atende tanto às solicitações iniciais de tickets quanto às solicitações de concessão de tickets. A parte referente ao ticket inicial é às vezes chamada de Servidor (ou serviço) de Autenticação. A parte referente à concessão de tickets é às vezes chamada de servidor (ou serviço) de concessão de tickets.
Protocolo de autenticação NTLM:
O acesso de um cliente a um recurso em um domínio do Active Directory pode ser autenticado usando o protocolo de autenticação de desafio-resposta conhecido como Gerenciador de LAN do Windows NT (NTLM). Quando um cliente solicita acesso a um serviço relacionado ao domínio, o serviço envia um desafio ao cliente, instruindo-o a usar seu token de autenticação para realizar uma operação matemática e, em seguida, fornecer o resultado ao serviço. O resultado pode ser verificado pelo serviço ou pelo Controlador de Domínio (DC). O serviço concede acesso ao cliente se o DC ou o serviço verificar se a resposta do cliente está correta.
Como permite que o usuário insira o fator de autenticação subjacente apenas uma vez, durante o login, o NTLM é uma espécie de logon único (SSO).

- O NEGOCIAR_MENSAGEM define uma mensagem de Negociação NTLM enviada do cliente para o servidor. Essa mensagem permite que o cliente especifique suas opções NTLM suportadas para o servidor.
- O MENSAGEM_DE_DESAFIO define uma mensagem de desafio NTLM que é enviada do servidor para o cliente e é usada pelo servidor para desafiar o cliente a provar sua identidade.
- O MENSAGEM_AUTENTICADA define uma mensagem de autenticação NTLM que é enviada do cliente para o servidor após o CHALLENGE_MESSAGE ser processado pelo cliente.
Observação: a autenticação do Windows usa o protocolo de autenticação Kerberos ou o protocolo de autenticação NTLM, dependendo das configurações do cliente e do servidor.
Protocolo de autenticação Kerberos:

- Mensagem A: Chave de sessão cliente/TGS criptografada usando a chave secreta do cliente/usuário.
- Mensagem B: Ticket-Granting-Ticket criptografado usando a chave secreta do TGS.
- Mensagem C: Composto pelo TGT da mensagem B e pelo ID do serviço solicitado.
- Mensagem D: Autenticador criptografado usando a chave de sessão do cliente/TGS.
- Mensagem E: Ticket de cliente para servidor criptografado usando a chave secreta do serviço.
- Mensagem F: Chave de sessão cliente/servidor criptografada com a chave de sessão cliente/TGS.
- Mensagem G: Um novo autenticador, que inclui o ID do cliente, registro de data e hora e é criptografado usando a chave de sessão cliente/servidor.
- Mensagem H: O registro de data e hora encontrado no Autenticador do cliente criptografado usando a Chave de Sessão Cliente/Servidor.
SSO do Kerberos no Ubuntu/Debian:
Pré-requisitos:
- Uma conta de serviço/conta de usuário no Active Directory.
- A senha da conta deve ter uma senha definida como Não expirado.
Etapa 1: Crie o arquivo Keytab no Controlador de Domínio do AD:
- No Controlador de Domínio do AD, abra o prompt de comando no modo de administrador e execute o seguinte comando para criar o arquivo Keytab.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab -crypto ALL
Observação: Certifique-se de que EXAMPLE.COM esteja em maiúsculas. Se o usuário com o SPN já existir, use-o em vez de criar um novo. O princípio do Kerberos diferencia maiúsculas de minúsculas. Verifique se há diferenças entre maiúsculas e minúsculas antes de executar o comando keytab.
- A seguir estão os componentes do comando.
| Nome do host do servidor: | É o nome do host do site hospedado no servidor. |
| EXEMPLO.COM: | É o nome de domínio do Active Directory. |
| Nome de usuário: | É uma conta de serviço no Active Directory. |
| Senha: | É a senha da conta de serviço usada acima. |
| Caminho: | Caminho para um local que armazenará o arquivo keytab. (C:\Temp\spn.keytab) |
Observação: O comando acima cria um arquivo keytab. Ele precisa ser colocado no servidor do cliente onde seu site WordPress está hospedado. 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.
- Abra Usuários e Computadores do Active Directory e, no menu superior, selecione Ver >> Recursos avançados.
- Abra a conta de serviço e vá para a guia do editor de atributos, navegue até o servicePrincipalName para verificar a entrada SPN.
- Navegue até a Delegação aba.
- Selecionar Confiar neste usuário para delegação a qualquer serviço (somente Kerberos).

- Clique Inscreva-se.
- Copie o Livro arquivo do Controlador de Domínio do AD para o servidor web hospedado no Apache.
- Forneça permissão para o arquivo keytab do Kerberos:
chmod 644 etc/apache2/spn.keytabEtapa 2: instalar bibliotecas de cliente Kerberos no servidor web:
- Use o seguinte comando no seu terminal para instalar as bibliotecas do cliente Kerberos.
sudo apt-get install krb5-user
Etapa 3: instalar módulos para o Apache:
Nota: Nas versões mais recentes do Ubuntu/Debian, o mod_auth_kerb foi descontinuado e substituído pelo mod_auth_gssapi.
- Existem dois módulos do Apache, mas apenas um deles precisa ser instalado:
1. Módulo mod-auth-gssapi para Apache.
2. Módulo mod_auth_kerb para apache. (obsoleto)
1. Instale o módulo mod-auth-gssapi para o apache:
- Use o seguinte comando para instalar o libapache2-mod-auth-gssapi módulo para Apache em sistemas baseados em Debian:
sudo apt-get -y install libapache2-mod-auth-gssapiOR
2. Instale o módulo mod_auth_kerb para apache (obsoleto):
- Use o seguinte comando para instalar o módulo auth_kerb para Apache em sistemas baseados em Debian:
sudo apt-get install libapache2-mod-auth-kerb- Depois que o módulo auth_kerb estiver instalado, ele precisa ser habilitado por meio do seguinte comando.
a2enmod auth_kerb- Após habilitar, Reinicie o Apache para fazer efeito.
Etapa 4: configure o domínio do Active Directory no arquivo de configuração do Kerberos:
- Abra e edite o krb5.conf arquivo.
O caminho para o arquivo krb5.conf para Linux é C:/etc/krb5.conf e para outros sistemas baseados em UNIX é c:/etc/krb5/krb5.conf - Adicione o seguinte trecho de configuração ao krb5.conf arquivo na seção mencionada:
[libdefaults]
default_realm = EXAMPLE.COM
# ...
# ...
[realms]
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
Observação: Substituir o CONTROLADOR DE DOMÍNIO DE ANÚNCIOS IP/DNS com seu IP/DNS endereço. Garantir EXEMPLO.COM deve estar em letras maiúsculas.
Substituir o EXEMPLO.COM 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.
- Salve o arquivo.
Etapa 5: configurar o Kerberos SSO para o diretório do site:
- Edite o arquivo de configuração do host virtual imposto que está armazenado em Diretório /etc/apache2/sites-enabled ou o arquivo host virtual padrão chamado 000-default.conf
Nota: Adicione a seguinte seção no diretório de acordo com o módulo Apache utilizado. Exemplo: "mod_auth_kerb" ou "mod_auth_gssapi".
- 1. Adicione a seguinte seção no diretório do site para mod_auth_gssapi.
<IfModule !mod_auth_gssapi.c>
LoadModule auth_gssapi_module /usr/lib64/httpd/modules/mod_auth_gssapi.so
</IfModule>
<Directory "/placeholder">
AuthType GSSAPI
AuthName "Kerberos auth"
GssapiAllowedMech krb5
GssapiBasicAuth On
GssapiCredStore keytab:<PATH TO KEYTAB>
GssapiLocalName On
BrowserMatch Windows gssapi-no-negotiate
Require valid-user
</Directory>
OR
- 2. Adicione a seguinte seção no diretório do site para mod_auth_kerb (descontinuada).
<Directory "/placeholder">
AuthType Kerberos
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/<Server Host Name>
Krb5Keytab <PATH TO KEYTAB>
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
</Directory>
Observação: Garantir EXEMPLO.COM deve estar em letras maiúsculas.
A seguir estão os componentes da configuração acima:
| EXEMPLO.COM: | Este é o domínio do Active Directory conforme configurado em krb5.conf. |
| CAMINHO PARA KEYTAB: | Caminho acessível para o keytab neste servidor. (etc/spn.keytab) |
- Após essa configuração, o Apache precisa ser reiniciado para que as alterações tenham efeito.
Observação: Depois de terminar de configurar as definições, clique aqui para configurar navegadores para Kerberos SSO.
Para testar sua configuração Kerberos/NTLM SSO, clique aqui.
Para solucionar qualquer erro, por favor clique aqui.
Configurar o Kerberos no RHEL/CentOS:
Etapa 1: Crie o arquivo Keytab no Controlador de Domínio do AD:
- No Controlador de Domínio do AD, abra o prompt de comando no modo de administrador e execute o seguinte comando para criar o arquivo Keytab.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab -crypto ALL
Observação: Certifique-se de que EXAMPLE.COM esteja em maiúsculas. O princípio do Kerberos diferencia maiúsculas de minúsculas. Verifique se há diferenças entre escrever em maiúsculas e minúsculas antes de executar o comando keytab.
- A seguir estão os componentes do comando.
| Nome do host do servidor: | É o nome do host do site hospedado no servidor. |
| EXEMPLO.COM: | É o nome de domínio do Active Directory. |
| Nome de usuário: | É uma conta de serviço no Active Directory. |
| Senha: | É a senha da conta de serviço usada acima. |
| Caminho: | Caminho para um local que armazenará o arquivo keytab. (C:\Temp\spn.keytab) |
Observação: O comando acima cria um arquivo keytab . Ele precisa ser colocado no servidor do cliente onde seu site WordPress está hospedado. 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.
- Copie o Arquivo Keytab do Controlador de Domínio do AD para o servidor web hospedado no Apache.
- Forneça permissão para o arquivo keytab do Kerberos:
chmod 644 etc/httpd/spn.keytabEtapa 2: instalar bibliotecas de cliente Kerberos no servidor web:
- Use o seguinte comando no seu terminal para instalar as bibliotecas do cliente Kerberos.
yum install -y krb5-workstation krb5-devel krb5-libs mod_auth_gssapi mod_session
Nota: Nas versões mais recentes do CentOS, o mod_auth_kerb foi descontinuado e substituído pelo mod_auth_gssapi.
Etapa 3: instalar módulos para o Apache:
Nota: Nas versões mais recentes do Ubuntu/Debian, o mod_auth_kerb foi descontinuado e substituído pelo mod_auth_gssapi.
- Existem dois módulos do Apache, mas apenas um deles precisa ser instalado:
1. Módulo mod-auth-gssapi para Apache.
2. Módulo mod_auth_kerb para apache (obsoleto).
1. Instale o módulo mod-auth-gssapi para o apache:
- Use o seguinte comando para instalar o Módulo libapache2-mod-auth-gssapi para Apache em sistemas baseados em Debian:
sudo apt-get -y install libapache2-mod-auth-gssapiOR
2. Instale o módulo mod_auth_kerb para apache (obsoleto):
- Use o seguinte comando para instalar o módulo auth_kerb para Apache em sistemas baseados em Red Hat. (Para as versões mais recentes do RHEL, use o módulo mod-auth-gssapi)
yum install mod_auth_kerbEtapa 4: configure o domínio do Active Directory no arquivo de configuração do Kerberos:
- Abra e edite o krb5.conf arquivo.
O caminho para o arquivo krb5.conf para RHEL é C:/etc/krb5.conf - Adicione o seguinte trecho de configuração ao krb5.conf arquivo na seção mencionada:
- Navegue até a [libdefaults] seção e adicione o seguinte:
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
- Navegue até a [reinos] seção e adicione o seguinte:
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
- Navegue até a [domínio_realm] seção e adicione o seguinte:
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
Observação: Substituir o CONTROLADOR DE DOMÍNIO DE ANÚNCIOS IP/DNS com seu endereço IP/DNS. Garantir EXAMPLE.COM deve estar em letras maiúsculas.
Substituir o EXEMPLO.COM 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.
- Salve o arquivo.
Etapa 5: configure o domínio do Active Directory no arquivo de configuração do Kerberos:
- Editar o arquivo de configuração do host imposto /etc/httpd/conf/httpd.conf
- Adicione a seguinte seção no diretório do site para mod_auth_gssapi
LoadModule auth_gssapi_module modules/mod_auth_gssapi.so
<Directory "/placeholder">
AuthType GSSAPI
AuthName "Kerberos auth"
GssapiBasicAuth On
GssapiCredStore keytab:<PATH TO KEYTAB>
GssapiLocalName On
Require valid-user
</Directory>
OR
- Adicione a seguinte seção no diretório do site para mod_auth_kerb (descontinuada).
<Directory "/placeholder">
AuthType Kerberos
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/<Server Host Name>
Krb5Keytab <PATH TO KEYTAB>
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
</Directory>
- A seguir estão os componentes da configuração acima:
| CAMINHO PARA KEYTAB | Caminho acessível para o keytab neste servidor. (etc/apache2/spn.keytab) |
| "/espaço reservado" | Caminho para a raiz do documento |
- Após essa configuração, o Apache precisa ser reiniciado para que as alterações tenham efeito.
Observação: Depois de terminar de configurar as definições, clique aqui para configurar navegadores para Kerberos SSO.
Para testar sua configuração Kerberos/NTLM SSO, clique aqui.
Para solucionar qualquer erro, por favor clique aqui.
SSO com autenticação do Windows no servidor IIS:
- Abra o prompt de comando em Modo de administrador.
- Execute o seguinte comando para adicionar Nome da entidade de serviço (SPN) para a conta de serviço.
Observação: Suponha que o site precise responder em http://nomedamáquina e http://nomedamáquina.dominio.com. Precisamos especificar esses endereços no atributo SPN da conta de serviço.
Setspn -S http/<computer-name>.<domain-name> <domain-user-account>Exemplo: C:\Users\Administrator> setspn -S HTTP/nome_da_máquina.dominio.com conta_de_serviço
Observação: "machinename.domain.com" aqui é o nome do computador. Certifique-se de que ele possa ser resolvido no servidor Windows que executa o serviço do Active Directory.
- Verifique se isso foi definido corretamente executando o seguinte comando:
setspn -l domain or service_accountExemplo: C:\Users\Administrator> setspn -l service_account ou C:\Users\Administrator> setspn -l domain_name

- O resultado deve listar http/nomedamáquina.domínio.com
- Abra Usuários e Computadores do Active Directory e, no menu superior, selecione Ver >> Recursos avançados.
- Abra a conta de serviço e vá para editor de atributos guia, navegue até a servicePrincipalName para verificar o Entrada SPN.
- Navegue até a Delegação aba.
- Selecionar Confiar neste usuário para delegação a qualquer serviço (somente Kerberos).

- Clique Inscreva-se.
- Abra o Gerenciador do IIS e clique no site para o qual você deseja habilitar a autenticação do Windows.
- Clique duas vezes em Autenticação.

- Na seção Autenticação, você pode ver que apenas a Autenticação Anônima está habilitada por padrão. O IIS sempre tenta realizar a autenticação anônima, então Desativar autenticação anônima e Habilitar autenticação do Windows.

- Botão direito do mouse sobre a Autenticação do Windows e clique no prestadores.

- A seguinte janela aparecerá. Certifique-se "Negociar" está no topo da lista de provedores.

Observação: Por padrão, existem dois provedores disponíveis: Negotiate e NTLM. O Negotiate é um contêiner que usa o Kerberos como primeiro método de autenticação e, se a autenticação falhar, o NTLM é usado. Portanto, é necessário que o Negotiate seja o primeiro na lista de provedores.
- Clique em Ok para fechar a janela.
- Para configurar o pool de aplicativos do IIS para iniciá-lo a partir da conta SPN criada, clique em Pools de aplicativos para abrir a janela Pools de Aplicativos.
- Clique com o botão direito do mouse no domínio e, na lista, clique em Configurações avançadas.

- Na janela Configurações avançadas, em Modelo de processo, clique em Identidade.

- Na Identidade do Pool de Aplicativos, selecione Conta personalizada e clique no conjunto botão para definir a Identidade.
- Mudá-lo de ApplicationPoolIdentidade para \.
Exemplo: domain.com\service_account

- Vou ao Editor de configuração.

- Na lista suspensa, selecione system.webServer > segurança > autenticação > windowsAuthentication.

- Mudar useAppPoolCredentials como Verdadeiro. e useKernelMode para Falso.
Observação: Definir useAppPoolCredentials como True significa que permitimos que o IIS use a conta de domínio para descriptografar o tíquete Kerberos dos clientes.
- Clique Inscreva-se.
- Reinicie o servidor IIS.
- Você pode verificar se a autenticação Kerberos está sendo usada no site monitorando o tráfego HTTP usando o Fiddler.
Inicie o Fiddler e abra o navegador no site desejado. Localize a linha de acesso ao site no lado esquerdo da janela. Selecione a aba Inspecionar no lado direito da janela. É evidente que o Kerberos foi usado para autenticação no site do IIS a partir da linha "Cabeçalho de Autorização (Negociar) parece conter um tíquete Kerberos".

Observação: Depois de terminar de configurar as definições, clique aqui para configurar navegadores para Kerberos SSO.
Para testar sua configuração Kerberos/NTLM SSO, clique aqui.
Para solucionar qualquer erro, por favor clique aqui.
SSO com Apache no Windows XAMPP Server:
- Abra o prompt de comando em Modo de administrador.
- Execute o seguinte comando para adicionar Nome da entidade de serviço (SPN) para a conta de serviço.
Setspn -s http/<computer-name>.<domain-name> <domain-user-account>Exemplo: C:\Users\Administrator> setspn -S HTTP/ nome_da_máquina.dominio.com conta_de_serviço
Observação: "machinename.domain.com" aqui é o nome do computador. Certifique-se de que ele possa ser resolvido no servidor Windows que executa o serviço do Active Directory.
- Verifique se isso foi definido corretamente executando o seguinte comando:
setspn -l domain\service_account- O resultado deve listar http/nomedamáquina.domínio.com
- Abra Usuários e Computadores do Active Directory e, no menu superior, selecione Ver >> Recursos avançados.
- Abra a conta de serviço e vá para editor de atributos guia, navegue até a servicePrincipalName para verificar o Entrada SPN.
- Navegue até a Delegação aba.
- Selecionar Confiar neste usuário para delegação a qualquer serviço (somente Kerberos).

- Clique Inscreva-se.
- Clique aqui para baixar o módulo apache.
- Copie o mod_authnz_sspi.so da Apache24 > módulos pasta e coloque-a no diretório de módulos (C:\xampp\apache\modules).
- Copie o sspipkgs.exe arquivo de Apache24 -> bin pasta e coloque-a na pasta bin da sua pasta Xampp Apache (.....\xampp\apache\bin) no seu servidor web.
- Abra httpd.conf (.....\xampp\apache\conf) e coloque a linha de código abaixo na seção LoadModule.
LoadModule authnz_sspi_module modules/mod_authnz_sspi.so- Certifique-se de que os seguintes módulos não estejam comentados:
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so- Além disso, certifique-se de habilitar extensão ldap.
- Abra o arquivo httpd.conf em (.....\xampp\apache\conf\httpd.conf).
Acesse e cole as linhas abaixo depois de #Require all grants.
<Directory "...../xampp/htdocs">
......
......
#Require all granted
AllowOverride None Options None
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
Require valid-user
</Directory>
- Reinicie seu Servidor Apache.
Observação: Depois de terminar de configurar as definições, clique aqui para configurar navegadores para Kerberos SSO.
Para testar sua configuração Kerberos/NTLM SSO, clique aqui.
Para solucionar qualquer erro, por favor clique aqui.
Configurar navegadores para Kerberos SSO:
Nota: A configuração do lado do cliente permite que o navegador utilize o SPNEGO para negociar a autenticação Kerberos. É necessário garantir que o navegador no sistema do usuário final esteja configurado para suportar a autenticação Kerberos.
Configuração geral do Kerberos SSO para todos os navegadores:
- Vá ao Painel de Controle e clique em Rede e Internet >> Opções de Internet.
- Isso abrirá uma janela de Propriedades da Internet. Clique em Segurança >> Intranet Local >> Sites.

- Depois disso, clique no Botão Avançado.

- De acordo com o relatório Adicione este site à zona seção adicione a URL do site no qual você deseja fazer login com SSO.

- Clique Ferramentas > Opções da Internet > Segurança > Intranet local > Nível personalizado.
- Role para baixo até as opções de Autenticação do Usuário e selecione Login automático apenas na zona da Intranet.

- Clique em Ok botão e reinicie o navegador.
Depois de fazer as configurações acima, você não precisa configurar os navegadores Internet Explorer, Google Chrome e Apple Safari.
- Internet Explorer
- Google Chrome
- Mozilla Firefox
- apple Safari
Teste sua configuração de SSO Kerberos/NTLM:
Sincronização de tempo:
O protocolo Kerberos exige que o horário do cliente e do servidor coincidam: se o relógio do sistema do cliente não coincidir com o do servidor, a autenticação falhará. A maneira mais simples de sincronizar os relógios do sistema é usar um servidor NTP (Network Time Protocol).
Verificar com comandos:
Para verificar sua configuração keytab e kerberos, você pode executar os seguintes comandos:
- Lista de K: O comando klist exibe o conteúdo de um cache de credenciais Kerberos ou de uma tabela de chaves. Com este comando, você pode verificar se obteve um tíquete válido ou não.
- klist -t -k etc/apache2/spn.keytab: Para listar todas as entradas na tabela de chaves etc/apache2/spn.keytab com registros de data e hora.
- klist -ek /etc/apache2/spn.keytab: Exibe o tipo de criptografia da chave de sessão e do tíquete e lista as entradas em uma tabela de chaves.
- kinit -V -kt /etc/apache2/spn.keytab -p HTTPS/ webserver.seudominio.com @SEUDOMÍNIO.COM: Verifique a autenticação Kerberos com o arquivo keytab.
- kdestroy -A: Você pode usar este comando no Linux para redefinir qualquer token Kerberos na sua máquina local. O comando destrói seu tíquete Kerberos anterior.
- limpeza da lista k: Você pode usar este comando no Windows para redefinir qualquer token Kerberos na sua máquina local. O comando destrói seu tíquete Kerberos anterior.
- KRB5_TRACE=/dev/stdout kinit -kt /etc/krb5.keytab HTTP/≶Nome do host do servidor>: Você pode usar este comando no seu servidor web Linux para obter o tíquete Kerberos usando o arquivo keytab e obter informações detalhadas para depuração do processo de autenticação Kerberos habilitando o rastreamento Kerberos.
Configuração de teste:
- Para testar a configuração do SSO, crie um test.php arquivo em seu diretório raiz do WordPress.
- Digite a linha abaixo:
<?php
var_dump($_SERVER);
?>
- Salve o arquivo e acesse-o no navegador da web. Você verá o Conteúdo $_SERVER.
- Procurar por "REMOTE_USER" e deve conter o nome de usuário atualmente conectado.
Nota: Remova o arquivo test.php após verificar sua configuração, pois ele contém informações importantes.
Autenticação Kerberos em vários domínios:
- Crie Keytabs separadas em cada domínio e mescle-as com a ferramenta ktutil:
ktutil
ktutil: read_kt <keytab_filename_1>
ktutil: read_kt <keytab_filename_2>
ktutil: read_kt <keytab_filename_3>
ktutil: write_kt spn.keytab
ktutil: quit
- Verifique a mesclagem com o comando abaixo:
klist -k spn.keytab
- Configurar krb5.conf:
O arquivo krb5.conf contém informações de configuração do Kerberos, incluindo KDC e servidores de administração para um ou mais domínios Kerberos, valores padrão para o domínio atual e mapeamentos de nomes de host para domínios Kerberos. No caso de múltiplos domínios, o arquivo krb5.conf deve ser atualizado com informações sobre vários domínios/domínios de domínio para que a autenticação funcione.
Solução de problemas:
A seguir estão as mensagens de erro mais comuns:
-
kinit: Pre-authentication failed: Invalid argument while getting initial credentialsO tipo de criptografia rc4, ainda muito utilizado em ambientes AD, mas já desabilitado por padrão no RHEL-8.3. Você pode consultar o exemplo abaixo para adicionar o tipo de criptografia ao seu arquivo keytab.
or
GSS ERROR gss_accept_sec_context(): [Unspecified GSS failure. Minor code may provide more information (Request ticket server HTTP/<Server Host Name>@EXAMPLE.COM kvno x enctype rc4-hmac found in keytab but cannot decrypt ticket)]
Exemplo:ktutil
addent -password -p HTTP/<Server Host Name>@EXAMPLE.COM -k 1 -e aes256-cts-hmac-sha1-96
wkt spn.keytab.
Certifique-se de que a criptografia Kerberos AES de 256 bits seja compatível com as configurações da "Conta" do usuário.

-
Unspecified GSS failure. Minor code may provide more information (Clock skew too great)O Kerberos é muito sensível ao tempo. Verifique se os relógios nos hosts do Active Directory e do servidor web são idênticos. Configure um dos seus controladores de domínio para servir como servidor NTP para os computadores clientes.
or
kinit: krb5_get_init_creds: Too large time skew -
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Permission denied)Permissões de sistema de arquivo erradas para /etc/apache2/spn.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 644 /etc/apache2/spn.keytab -
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Key table entry not found).Principal de serviço ausente (possivelmente HTTP/ webserver.yourdomain.com @YOURDOMAIN.COM) em /etc/apache2/spn.keytab. -
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)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. -
gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, ).Senha de máquina ou kvno incorreta em etc/apache2/spn.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. -
kinit: KDC has no support for encryption type while getting initial credentialsAltere o tipo de criptografia padrão na seção libdefaults do arquivo /etc/apache2/krb5.conf. Adicione default_tgs_enctypes e default_tkt_enctypes à sua configuração. -
[libdefaults]
default_tgs_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
default_tkt_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5kinit: krb5_get_init_creds: Error from KDC: CLIENT EXPIREDSua conta Kerberos não está mais ativa. As credenciais da conta precisam ser renovadas.
or
kinit: Client's entry in database has expired while getting initial credentials -
kinit: krb5_cc_get_principal: No credentials cache file foundO domínio errado foi direcionado ao executar o comando kinit. Verifique o nome do domínio; ele deve estar em letras maiúsculas. EXEMPLO.COM
or
kinit: krb5_get_init_creds: Error from KDC: CLIENT_NOT_FOUND -
kinit : Cannot find KDC for requested realm while getting initial credentialsO arquivo /etc/apache2/krb5.conf não contém o nome de domínio do diretório ativo (.EXAMPLE.COM). -
kinit: Preauthentication failed while getting initial credentialsCausado por erro de digitação da senha do Kerberos. Tente novamente. Ou devido ao relógio do seu sistema. Certifique-se de que o comando date retorne uma hora correta, com uma diferença de 5 minutos. -
kinit: Client not found in Kerberos database while getting initial credentialsSeu principal Kerberos pode ser diferente do seu nome de usuário no sistema local. -
kinit: Client's entry in database has expiredVocê deve alterar sua senha do Kerberos.
Perguntas Frequentes
Mais perguntas frequentes ➔Posso usar um usuário LDAP existente como principal do serviço Kerberos?
Sim, você pode usar um usuário LDAP existente como principal do serviço Kerberos. No entanto, esse usuário deve ter uma senha definida para nunca expirar. Certifique-se de que essa conta não seja usada por nenhum usuário, pois o aplicativo a utiliza como principal do serviço Kerberos e o keytab correspondente para obter um tíquete Kerberos.
O que é um "cliente Kerberos", "servidor Kerberos" e "servidor de aplicativos"?
Toda a autenticação no Kerberos ocorre entre clientes e servidores. Portanto, qualquer entidade que receba um tíquete de serviço para um serviço Kerberos é chamada de "cliente Kerberos" na terminologia Kerberos. Usuários são frequentemente considerados clientes, mas qualquer entidade principal pode ser um.
O Centro de Distribuição de Chaves, ou KDC, é normalmente chamado de "servidor Kerberos". Tanto o Serviço de Autenticação (AS) quanto o Serviço de Concessão de Tíquetes (TGS) são implementados pelo KDC. Todas as senhas conectadas a cada entidade principal são armazenadas no KDC. Por isso, é essencial que o KDC seja o mais seguro possível.
O termo "servidor de aplicações" geralmente se refere a softwares Kerberizados que os clientes usam para interagir durante a autenticação usando tickets Kerberos. Um exemplo de servidor de aplicações é o daemon telnet Kerberos.
Por que estou recebendo uma solicitação para inserir minhas credenciais?
Isso acontece quando o protocolo NTLM é usado para autenticação em vez do Kerberos.
Isso pode ocorrer por vários motivos:
- Verifique se você está usando uma máquina associada a um domínio para acessar o site.
- Certifique-se de que o horário esteja sincronizado entre o servidor LDAP e o servidor web.
- Confirme se as configurações do seu navegador e as opções da Internet estão configuradas para o Kerberos SSO.
- Se você ainda estiver enfrentando esse problema, sinta-se à vontade para entrar em contato conosco.
Artigos Relacionados
Obrigado pela sua resposta. Entraremos em contato em breve.
Algo deu errado. Envie sua consulta novamente.


