2011-05-16 2 views
3

Nous avons une application Perl qui fonctionne sous Apache sous Solaris en utilisant CGI :: application. Tout va bien. Nous aimerions avoir accès à la variable USER_ID transmise par le navigateur IE, et effectuer des requêtes de base de données et des requêtes LDAP.Apache + Perl + NTLM/LDAP == code d'accès unique?

J'ai regardé la documentation Apache et je ne peux pas comprendre comment y parvenir. Nous n'avons pas d'accès internet (c'est un intranet) depuis les serveurs Solaris, nous devons donc tout compiler nous-mêmes.

Quelqu'un at-il une liste de vérification (ou tutoriel) de ce qui a besoin d'Apache (modules/plugins) afin d'y parvenir, et comment il doit être configuré?

+0

Afin de donner une réponse appropriée, vous pouvez inclure quelques détails sur ce que vous voulez faire avec le USER_ID? – rasjani

+1

Comment cela aiderait-il? – Louis

Répondre

0

Il y a des plugins mod_ntlm et mod_ldap pour apache que vous pouvez utiliser pour authentifier.

Dans votre cas, je suppose que vous voulez vraiment utiliser mod_ntlm et ldap ou "répertoire actif" est seulement son backend?

Voici le tutoriel qui couvre la mise en place phase: http://sivel.net/2007/05/sso-apache-ad-1/

phase de compilation dans le didacticiel est destiné à la plate-forme Linux à base de tours par minute si, mais twiki a un peu plus d'informations sur la compilation pour solaris10 ici: http://twiki.org/cgi-bin/view/Codev/NtlmForSolaris10#How_to_build_your_own_mod_ntlm_b

+0

Oui, absolument. En d'autres termes, vous devez d'abord configurer Apache pour authentifier l'utilisateur par rapport à Active Directory. Ce n'est qu'après avoir fait cela que l'userID sera disponible pour Perl. – Ben

3

NTLM Winbind

J'utilise le module auth_ntlm_winbind_module (mod_auth_ntlm_winbind.so) sur notre serveur. Vous devez avoir Samba et WinBind installés, correctement configurés et en cours d'exécution.

Vous pouvez télécharger le module de l'arborescence du projet Samba:

git clone git://git.samba.org/jerry/mod_auth_ntlm_winbind.git 

Pour authentifier les utilisateurs via NTLM, vous devez ajouter les directives suivantes à vos paramètres du répertoire:

<Directory /srv/http> 
     Allow from all 
     AuthName "NTLM Authentication thingy" 
     NTLMAuth on 
     NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp" 
     NTLMBasicAuthoritative on 
     AuthType NTLM 
     require valid-user 
     AllowOverride all 
</Directory> 

Bien sûr Vous devez également charger le module:

LoadModule auth_ntlm_winbind_module /usr/lib/httpd/modules/mod_auth_ntlm_winbind.so 

Le compte d'utilisateur Windows est transmis à l'application comme REMOTE_USER:

#!/usr/bin/perl 

use CGI; 
my $query = new CGI; 
# get the windows account from the header 
my $windows_account = $query->remote_user(); 

Notez que IE envoie uniquement les données d'authentification des utilisateurs vers des sites de confiance.

Here's a website avec un peu plus d'informations sur le module.


authentification directe via LDAP

Une autre méthode consiste à utiliser le module authnz_ldap_module (mod_authnz_ldap.so). Ceci est probablement déjà chargé par défaut. Notez que ce n'est pas true Connexion unique lorsque l'utilisateur est invité à entrer un mot de passe.

LoadModule authnz_ldap_module modules/mod_authnz_ldap.so 

Ajoutez ceci à la définition de votre répertoire:

<Directory /srv/http> 
    AuthName "Authentication required" 
    AuthType Basic 
    AuthzLDAPAuthoritative off 
    AuthBasicProvider ldap 

    # "protocol://hostname:port/base?attribute?scope?filter" NONE 
    # NONE indicates that an unsecure connection should be used for LDAP, i.e. port 389 
    AuthLDAPURL "ldap://your.ldap.server.net:389/OU=the,OU=search,OU=node,DC=domain,DC=net?sAMAccountName?sub?(objectClass=*)" NONE 


    # This is only needed if your LDAP server doesn't allow anonymous binds 
    AuthLDAPBindDN "CN=AD Bind User,OU=the,OU=bind,OU=node,DC=domain,DC=net" 
    AuthLDAPBindPassword super-secret 

    Require valid-user 
    AllowOverride all 
</Directory> 

More info about the module.

Questions connexes