Single Sign On para intranet com Apache e Linux MIT Kerberos

3

EDIT: RESOLVIDO! Veja minha resposta abaixo.

Saudações, estou procurando uma maneira de fazer um único login em uma intranet da seguinte maneira:

  1. Um usuário do Linux efetua logon por meio de uma interface gráfica (por exemplo, o GNOME).
  2. Ele solicita automaticamente um TGT para seu nome de usuário do KDC do Kerberos do MIT.
  3. De uma forma ou de outra, o servidor Apache (que nós presumiremos estar no mesmo servidor que o KDC) é informado de que esse usuário efetuou login.
  4. Quando o usuário acessa a intranet, ele recebe automaticamente acesso a seus aplicativos da Web.

Acho que não vi esse tipo de funcionalidade enquanto pesquisava na rede. Eu sei que as seguintes possibilidades existem:

  • Usando um módulo de autenticação, como mod_auth_kerb, um usuário recebe um prompt de login para inserir seu nome de usuário e senha, que são autenticados no servidor MIT Kerberos. (eu gostaria que isso fosse automático).
  • O IIS oferece suporte ao logon integrado do Windows via ASP.Net quando o usuário faz parte de um Active Directory. (estou procurando o equivalente do Linux / Apache.)

Todas as sugestões, críticas e idéias são muito apreciadas. Isso é para um projeto da escola mostrar uma prova de conceito, então toda informação útil é mais que bem-vinda. :)

    
por Beerdude26 15.05.2010 / 20:34

1 resposta

2

Eu achei!

Eu segui as instruções no link (consulte: "Instalação do aplicativo") para configurar o servidor da web Apache.

Aqui está o meu httpd.conf [IMAGE] :

ServerName www.eindwerk.lan

< Directory /var/www/ > Options Indexes FollowSymLinks MultiViews

   AllowOverride None
   Order allow,deny
   allow from all

  AuthType Kerberos

KrbMethodNegotiate on

KrbMethodK5Passwd on

  AuthName "Kerberos Login"
  KrbAuthRealm EINDWERK.LAN
  Krb5Keytab /etc/apache2/auth/apache2.keytab
  require valid-user

< /Directory >

  1. Depois, configurei o Mozilla Firefox para confiar em meu site interno (www.eindwerk.lan) [IMAGE] :

    network.negotiate-auth.delegation-uris: eindwerk.lan

    network.negotiate-auth.trusted-uris: eindwerk.lan

  2. Faça um kinit em um terminal. [IMAGEM]

  3. Navegue até o site interno: Agora você está conectado automaticamente.

    Como isso funciona?

    • O Mozilla Firefox faz uma solicitação HTTP / GET comum.
    • O Apache responde com a autorização HTTP / 401 necessária.
    • O Mozilla Firefox responde com o token Kerberos que acabamos de obter com kinit . [IMAGEM DO WIRESHARK CAPTURE]
    • A autenticação do
    • Kerberos ocorre e o Apache responde com o HTTP / 200 OK.
  4. Faça um klist em um terminal. Você deve ver o ticket para o servidor da web! [IMAGEM]

  5. Faça um kdestroy em um terminal. [IMAGEM]

  6. Atualização de hardware (CTRL + F5) no site interno. Agora você é apresentado com um prompt de login! [IMAGEM]

por 16.05.2010 / 05:19