Kerberos e signle-sign-on para o site

2

Eu tenho um site em execução em um computador Linux usando o Apache. Eu usei mod_auth_kerb para autenticação Kerberos de logon único em um servidor Windows Active Directory.

Para que o Kerberos funcione corretamente, criei uma conta de serviço no Active Directory chamada dummy .

Gerei um keytab para o servidor da Web Linux usando o ktpass.exe no servidor do Windows AD usando este comando:

ktpass /out C:\krb5.keytab /princ HTTP/[email protected] /mapuser [email protected] /crypto RC4-HMAC-NT /ptype KRB5_NT_PRINCIPAL /pass xxxxxxxxx

Eu posso obter com sucesso um ticket do servidor web Linux usando este comando:

kinit -k -t /path/to/keytab HTTP/[email protected]

... e veja o ticket com klist .

Também configurei meu servidor da web com essas propriedades do Kerberos:

<Directory />
    AuthType                Kerberos
    AuthName                "Example.com Kerberos domain"
    KrbMethodK5Passwd       Off
    KrbAuthRealms           EXAMPLE.COM
    KrbServiceName          HTTP/[email protected]
    Krb5KeyTab              /path/to/keytab
    Require                 valid-user
    SSLRequireSSL
    <Files wsgi.py>
            Order deny,allow
            Allow from all
    </Files>
</Directory>

No entanto, quando tento fazer login no site (a partir de outro Desktop com nome de usuário 'Jeff') minhas credenciais de Kerberos não são aceitas automaticamente pelo servidor da web. Deve me conceder acesso imediatamente depois disso, mas isso não acontece. A única informação que recebo dos logs mod_auth_kerb é:

kerb_authenticate_user entered with user (NULL) and auth_type Kerberos

No entanto, mais informações são reveladas quando altero a configuração de mod_auth_kerb KrbMethodK5Passwd to On :

[Fri Oct 18 17:26:44 2013] [debug] src/mod_auth_kerb.c(1939): [client xxx.xxx.xxx.xxx] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
[Fri Oct 18 17:26:44 2013] [debug] src/mod_auth_kerb.c(1031): [client xxx.xxx.xxx.xxx] Using HTTP/[email protected] as server principal for password verification
[Fri Oct 18 17:26:44 2013] [debug] src/mod_auth_kerb.c(735): [client xxx.xxx.xxx.xxx] Trying to get TGT for user [email protected]
[Fri Oct 18 17:26:44 2013] [debug] src/mod_auth_kerb.c(645): [client xxx.xxx.xxx.xxx] Trying to verify authenticity of KDC using principal HTTP/[email protected]
[Fri Oct 18 17:26:44 2013] [debug] src/mod_auth_kerb.c(1110): [client xxx.xxx.xxx.xxx] kerb_authenticate_user_krb5pwd ret=0 [email protected] authtype=Basic

O que estou perdendo? Eu estudei muitos tutoriais on-line e não consigo encontrar uma razão pela qual as credenciais do Kerberos não estejam permitindo o acesso.

    
por Dylan Klomparens 18.10.2013 / 23:52

1 resposta

3

Depois de pesquisar muito mais informações de log, descobri que a máquina cliente não estava respondendo adequadamente ao ticket do servidor. A maneira como você pode dizer que algo está errado na máquina cliente é que você verá a mensagem de erro do servidor Apache "falha ao verificar as credenciais krb5: Servidor não encontrado no banco de dados Kerberos ". No arquivo /etc/krb5.conf na máquina cliente, você precisa verificar se o nome do domínio da Web mapeia para a região Kerberos adequada:

[domain_realm]
    example.com = REALM.EXAMPLE.COM
    .example.com = REALM.EXAMPLE.COM

Sem isso, o cliente rejeitará o servidor porque os tickets Kerberos só poderão vir de regiões explicitamente permitidas .

Espero que esta informação ajude os outros por aí!

    
por 22.10.2013 / 00:19