AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-464664

kagmole's questions

Martin Hope
kagmole
Asked: 2021-08-27 06:57:18 +0800 CST

Apache HTTP com Kerberos não funciona com navegadores com tecnologia Chromium em máquinas fora do domínio

  • 1

Aqui está a configuração do módulo Apache HTTP Kerberos em /etc/apache2/sites-available/my.server.tld.conf:

# ...
<Location />
  Authname "SSO Authentication"
  AuthType Kerberos
  KrbAuthRealms MY.DOMAIN.TLD
  KrbServiceName HTTP/[email protected]
  Krb5Keytab /etc/apache2/kerb5.my.server.tld.ktab
  KrbMethodNegotiate On
  KrbMethodK5Passwd On
  Require valid-user
</Location>
# ...

E a configuração do Kerberos em /etc/krb5.conf:

[libdefaults]
  default_realm = MY.DOMAIN.TLD

# ...

[realms]
  MY.DOMAIN.TLD = {
    kdc = my.ad.server.1.tld
    kdc = my.ad.server.2.tld
    admin_server = my.ad.server.1.tld
  }

# ...

[domain_realm]
  friendly.domain.tld = MY.DOMAIN.TLD
  .friendly.domain.tld = MY.DOMAIN.TLD

# ...

O servidor web Apache HTTP está instalado em um Debian GNU/Linux 10.

O arquivo keytab foi gerado no my.ad.server.1.tld, que é um Windows Server, com o ktpasscomando.
Com essa configuração, tudo funciona bem no Edge e no Firefox em máquinas Windows no MY.DOMAIN.TLDdomínio.

Meu problema vem de clientes que usam o Microsoft Edge (o novo com mecanismo Chromium) ou o Google Chrome em máquinas Windows fora do domínio.

Na primeira conexão com my.server.tld, o navegador recebe os cabeçalhos WWW-Authenticate: Negotiatee .WWW-Authenticate: Basic realm="SSO Authentication"

Com o Microsoft Edge, e ao contrário do Firefox, a caixa de diálogo de autenticação que aparece WWW-Authenticate: Negotiatenão é a do navegador, mas uma caixa de diálogo de autenticação do Windows, e não funciona, independentemente do que digitarmos.

Após uma primeira tentativa de login com falha, uma segunda solicitação é emitida pelo navegador, e desta vez ele recebe apenas o WWW-Authenticate: Basic realm="SSO Authentication"cabeçalho. A caixa de diálogo de autenticação do navegador aparece e funciona. A navegação adicional dentro my.server.tldgerará muitas caixas de diálogo de autenticação do Windows em segundo plano. Por exemplo, se houver uma imagem em uma página, ela mostrará uma caixa de diálogo de autenticação para ela.

Percebi que se a máquina Windows estiver conectada na rede interna de MY.DOMAIN.TLDe especificarmos explicitamente o domínio na caixa de diálogo de autenticação do Windows, ela também funcionará bem (ou seja [email protected], como o nome de usuário).

Com tudo isso em mente, agora me pergunto...

  • É realmente possível fazê-lo funcionar com a caixa de diálogo Autenticação Integrada do Windows em máquinas Windows?
  • Existe uma maneira de "forçar" o domínio a ser usado para a autenticação, para anular a necessidade de especificá-lo explicitamente como [email protected]para máquinas fora do MY.DOMAIN.TLDdomínio?

Eu já tentei adicionar default_domain = my.domain.tlddentro da configuração do reino Kerberos ou obter um Kerberos TGT kinitno servidor Debian GNU/Linux 10 sem sucesso.

Lendo os logs do Apache HTTP com LogLevel trace8cada situação, parece que enquanto uma caixa de diálogo de autenticação do Windows aparece, um token NTLM é retornado, o que faz com que não funcione corretamente.

Quando funciona

Em qualquer lugar com Firefox
OU
Com um computador dentro do domínio, rede interna (Edge ou Chrome)
OU
Com um computador fora do domínio, rede externa e usando [email protected](Edge ou Chrome):

mod_authz_core.c(820): AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
mod_authz_core.c(820): AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
src/mod_auth_kerb.c(1963): kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
src/mod_auth_kerb.c(1296): Acquiring creds for HTTP/my.server.tld
src/mod_auth_kerb.c(1719): Verifying client data using KRB5 GSS-API
src/mod_auth_kerb.c(1735): Client didn't delegate us their credential
src/mod_auth_kerb.c(1754): GSS-API token of length 180 bytes will be sent back
mod_authz_core.c(820): AH01626: authorization result of Require valid-user : granted
mod_authz_core.c(820): AH01626: authorization result of <RequireAny>: granted

Quando não funciona

Com um computador fora do domínio, rede externa (Edge ou Chrome):

mod_authz_core.c(820): AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
mod_authz_core.c(820): AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
src/mod_auth_kerb.c(1963): kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
src/mod_auth_kerb.c(1296): Acquiring creds for HTTP/my.server.tld
src/mod_auth_kerb.c(1719): Verifying client data using KRB5 GSS-API
src/mod_auth_kerb.c(1735): Client didn't delegate us their credential
src/mod_auth_kerb.c(1763): Warning: received token seems to be NTLM, which isn't supported by the Kerberos module. Check your IE configuration.
src/mod_auth_kerb.c(1156): GSS-API major_status:00010000, minor_status:00000000
gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)

A parte chata de tudo isso é que funciona perfeitamente no Firefox, mas não em navegadores com um mecanismo Chromium recente. É porque ele volta para uma autenticação NTLM em vez de uma básica?

authentication kerberos apache2
  • 1 respostas
  • 781 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve