LDAP Auth proxy adicionando cabeçalhos de acordo com grupos LDAP

1

Estou tentando configurar alguns mecanismos WebSSO, que permitem que meu cliente autentique pessoas no Active Directory interno e adicione cabeçalhos seguros (https) que contêm informações de credenciais.

Versão 1 OK: autentique e adicione cabeçalhos

A primeira versão é "bastante" simples. Eu estou usando o Apache e mod_auth_kerb para autenticar e, em seguida, adiciono cabeçalhos. A seguinte configuração é um parente do existente.

<VirtualHost  *:80>
    ServerName external-sso.corp.fr
    RewriteEngine On
</VirtualHost>

<location /app2> 
    # Authentication
    AuthType Kerberos
    AuthName "Active Directory Authentication"
    KrbMethodNegotiate On
    KrbMethodK5Passwd On
    KrbLocalUserMapping On
    KrbAuthRealms CORP.REALM.FR
    Krb5KeyTab /etc/krb5/http-myserver.corp.realm.fr.keytab
    Require valid-user

    # Identification
    AuthLDAPURL "ldaps://corp.realm.fr:636/DC=realm,DC=corp,DC=fr?sAMAccountName?sub?(objectClass=*)"
    AuthLDAPBindDN "CN=App2,OU=cloud,OU=prod,OU=Authentication,DC=realm,DC=corp,DC=fr"
    AuthLDAPBindPassword "*******"
    AuthLDAPGroupAttributeIsDN on
    Require valid-user

    # Adding Information into headers
    RewriteCond %{REMOTE_USER} (.+)
    RewriteRule .* - [E=RU:%{REMOTE_USER}]
    RequestHeader set X-App2-Remote-User %{RU}e
</location>

Versão 2 não tem ideia! : autenticar e adicionar cabeçalhos de acordo com grupos

Para a próxima versão, gostaria de adicionar SOMENTE cabeçalhos específicos se o usuário pertencer a um grupo, por exemplo, nome da conta de usuário, se ele tiver permissão para acessar o APP2, conta genérica, se não.

Eu não sei como conseguir isso, mesmo criando dois vhosts diferentes ... , mesmo que seja possível.

Você poderia me dar algumas dicas? Não hesite em adicionar conselhos, mesmo eu sei que:

  • Active Directoy já tem mecanismos web-sso com AD / AM
  • Adicionar cabeçalhos não é realmente seguro (não importa aqui, usando HTTPS e filtragem de IP)
  • Eu realmente preciso de um web-sso completo (na verdade, estamos comparando o Shibboleth, o AD / AM e outras soluções, mas não temos tempo para esperar :) ... você sabe, negócios são negócios!
por Jean-Rémy Revy 09.09.2013 / 11:47

3 respostas

1

O requer grupo em vez da ajuda do usuário requerido?

Veja também esta pergunta sobre enumeração de grupos aninhados.

Require ldap-filter memberof:1.2.840.113556.1.4.1941:=CN=Access to Apache,OU=My Organization Unit,DC=company,DC=com
    
por 09.09.2013 / 14:45
1

Como você está usando o LDAP, é possível evitar o mod_rewrite. Embora definindo:

AuthLDAPRemoteUserAttribute sAMAccountName

não teve efeito para mim com o Apache-2.4 - ao contrário da documentação - o que funcionou, foi %{AUTHENTICATE_sAMAccountName}e . Por exemplo:

RequestHeader  set X-App2-Remote-User %{AUTHENTICATE_sAMAccountName}e

Observe que AuthLDAPURL precisa conter ?sAMAccountName no final para que AUTHENTICATE_sAMAccountName seja criado no ambiente por mod_ldap. Você já tem isso no seu exemplo.

    
por 26.08.2016 / 08:13
0

Eu finalmente resolvi meu problema modificando a maneira como eu dei o problema.

Eu consegui ter dois contextos de aplicativo diferentes (por exemplo, / app2-anonymous e / app2-nameduser) chamados pelo primeiro aplicativo (app1).

Mas ainda estou procurando uma resposta melhor, mesmo que pareça que minha solução seja "o modo HTTP do Apache".

    
por 25.09.2013 / 15:13