Autenticação PKI no HTTPD usando o Active Directory (LDAP)

3

No meu ambiente, uma entidade externa fornece uma CA raiz & CA (s) intermediária (s). Eles emitem milhares de cartões inteligentes com certificados PKI para autenticação. Eles fornecem a autenticação de cliente (OID 1.3.6.1.5.5.7.3.2) dentro do uso de chave estendida, campos de nome alternativo de assunto. Contém o número de identificação exclusivo do usuário, ou seja, [email protected], que se destina a ser o UserPrincipalName (UPN) do Active Directory do usuário.

Esses cartões inteligentes podem ser emitidos por até 30 dias, ou até 3 anos, e o uso do UPN para autenticação permite que os usuários mantenham o acesso quando o cartão inteligente expira / quebre e receba um novo, sem ter para associar novamente seus certificados no Active Directory.

O esquema de autenticação acima funciona a partir de estações de trabalho, servidores, servidores linux do Windows e é imutável (fora do controle).

Agora, estamos tentando configurar o HTTPD para autenticar esses usuários com seus certificados PKI usando a autenticação de cliente SSL / TLS. No nível básico de autenticação de usuários, se eles tiverem um token de PKI assinado pelos intermediários e não for revogado pelo trabalho de CRL ou OCSP.

O que estamos tentando fazer é associar sua sessão PKI à sua conta de diretório ativo, para que possamos fazer uma autorização com base na participação no grupo de segurança do Active Directory.

Nós podemos extrair o UPN, mas parece que não há como conectar a autenticação do cliente mod_ssl ao esquema de autorização mod_authnz_ldap.

Abaixo está nossa prova de configuração do conceito httpd.

Listen 443 https
<VirtualHost _default_:443>
    SSLEngine on
    .... standard SSL options ....
    <Location /secure-pki>
        SSLVerifyClient require
        SSLVerifyDepth 2

        # How do we map the SSL_CLIENT_SAN_OTHER_msUPN_0 environment variable so mod_authnz_ldap uses it?

        AuthLDAPBindDN "[email protected]"
        AuthLDAPBindPassword "apassword"
        AuthLDAPURL "ldaps://ldap1.example.com ldap2.example.com:3269/dc=example,dc=com?userPrincipalName?sub?(objectClass=user)"
        Require ldap-group cn=Managers,ou=Groups,dc=example,dc=com
    </Location>
</VirtualHost>

Assim, no essense não podemos descobrir como mapear a variável de ambiente SSL_CLIENT_SAN_OTHER_msUPN_0 para o nome de usuário do mod_authnz_ldap, então mod_authnz_ldap a usa para a verificação de autorização.

    
por ruckc 11.11.2017 / 04:02

0 respostas