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
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.
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>
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:
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
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.
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".