Autenticação LDAP do Apache (mod_auth_ldap) no MacOS Server (10.5)

3

A - Existe um módulo de autenticação LDAP (mod_auth_ldap) para a versão do Apache que vem embutida no MacOS Server 10.5?

(Tenho certeza que não, mas talvez alguém tenha compilado um.)

B - Se não, ele pode ser compilado na versão do MacOS do Apache?

(Cara, isso seria legal.)

3 - Se eu não posso usar a versão Apple do Apache para isso, qual é a melhor maneira de fazer a autenticação LDAP do Apache funcionar no MacOS Server 10.5?

(De preferência, um que funcione com o software de gerenciamento MacOS Servers)

    
por Simurr 26.01.2010 / 19:06

4 respostas

2

Boa sorte ao usar o apsx para construir o mod_authnz_ldap contra o httpd da Apple.

tar -xzf httpd-2.2.15.tar.gz 
cd httpd-2.2.15
cd modules/aaa
/usr/sbin/apxs -cia mod_authnz_ldap.c

mod_authnz_ldap.c:41:2: error: #error mod_authnz_ldap requires APR-util to have LDAP support built in.
...

Mas você pode criar seu próprio httpd com o ldap sem muito esforço.

tar -xzf httpd-2.2.15.tar.gz 
cd httpd-2.2.15
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-ldap --enable-authnz-ldap --enable-ssl --with-included-apr --with-ldap 
make; make test; make install

Desative o httpd da Apple no Server Admin e crie seu próprio plad do launchd.

sudo cp -p /System/Library/LaunchDaemons/org.apache.httpd.plist /System/Library/LaunchDaemons/your_domain_name.httpd.plist

Edite seu plist para apontar para o seu httpd (substitua / usr / sbin / httpd por / usr / local / apache2 / bin / httpd) e altere o rótulo.

Atualize / usr / local / apache2 / bin / apachectl para usar o launchd de acordo com este patch:

--- /usr/local/apache2/bin/apachectl    2009-04-01 09:56:16.000000000 -0700
+++ apachectl               2009-04-02 20:30:33.000000000 -0700
@@ -65,6 +65,9 @@
 # --------------------                              --------------------
 # ||||||||||||||||||||   END CONFIGURATION SECTION  ||||||||||||||||||||

+LAUNCHCTL="/bin/launchctl"
+LAUNCHD_JOB="/Library/LaunchDaemons/your_domain_name.httpd.plist"
+
 # Set the maximum number of file descriptors allowed per child process.
 if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then
     $ULIMIT_MAX_FILES
@@ -76,8 +79,17 @@
 fi

 case $ARGV in
-start|stop|restart|graceful|graceful-stop)
-    $HTTPD -k $ARGV
+start)
+    $LAUNCHCTL load -w $LAUNCHD_JOB
+    ERROR=$?
+    ;;
+stop|graceful-stop)
+    $LAUNCHCTL unload -w $LAUNCHD_JOB
+    ERROR=$?
+    ;;
+restart|graceful)
+    $LAUNCHCTL unload -w $LAUNCHD_JOB 2> /dev/null
+    $LAUNCHCTL load -w $LAUNCHD_JOB
     ERROR=$?
     ;;
 startssl|sslstart|start-SSL)

Não, você não poderá usar o Apple Server Admin para configurar e administrar o seu httpd. Mas o Administrador de Servidores não pode fornecer uma GUI que abranja todas as opções de configuração do httpd de qualquer maneira. Adicione / usr / local / apache2 / bin ao seu PATH (ou sempre especifique os caminhos completos). Configure e teste o httpd e carregue-o via launchctl:

LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
AuthType Basic
AuthName "Your Network"
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL ldap://ldap.your_domain_name/dc=xxx,dc=yyy
AuthLDAPGroupAttributeIsDN off
AuthLDAPGroupAttribute memberuid
Require valid-user
# Require ldap-group cn=accounting,cn=groups,dc= xxx,dc=yyy
Satisfy any

/usr/local/apache2/bin/apachectl -S

sudo launchctl load -w /Library/LaunchDaemons/your.domain_name.httpd.plist

link e link são boas fontes de dicas sobre como compilar software de código aberto para o OSX.

    
por 14.04.2010 / 23:05
1

mod_auth_ldap / mod_authnz_ldap não são incluídos na versão do Apache que vem com o OS X (Por que eu não sei, já que eles incluem mod_ldap ... suspiro )

Eu não tenho certeza sobre (B) - Você pode baixar o Apache do httpd.apache.org, compilá-lo (especifique mod_authnz_ldap como um módulo compartilhado), copiar o módulo mod_authnz_ldap.so em / usr / libexec / apache2 / e edita manualmente a configuração do apache do OS X para carregar o módulo. Teoricamente isso deveria funcionar.

Se você tentar isso eu sugiro usar o código-fonte que corresponde à versão do Apache no seu Mac (Provavelmente 2.2.13 mas verifique "httpd -v" no terminal para obter o número da versão)

A little digging on this over the weekend -- It's not as simple as enabling authnz_ldap for apache 2.2.x: It doesn't build on OS X!

Re: # 3, até onde eu saiba, não há outra versão do Apache que se integre com o gerenciador de servidores OS X, embora (novamente teoricamente ) qualquer versão 2.2.x deva trabalho, desde que esteja usando os arquivos de configuração que o gerenciador do servidor escreve).

Eu estaria interessado se houvesse uma maneira menos agressiva de ativar a autenticação LDAP.

    
por 28.01.2010 / 22:07
1

Você pode baixar o código-fonte da Apple no Apache em site . Se você construir isso usando o Makefile, você deve acabar com uma versão do Apache praticamente idêntica àquela que vem instalada com o Mac OS X. De lá, eu tentaria alterar algumas das opções no processo de compilação para ativar o mod_authnz_ldap module. Um bom começo seria adicionar --enable-authnz-ldap à parte Configure_Flags do Makefile e ver o que acontece.

Provavelmente, você precisará da origem do OpenLDAP para o seu sistema, que também pode obter da Apple . Em seguida, você pode adicionar outro sinalizador de configuração para apontar para a origem: --enable-ldap=<source dir> .

Isso deve começar, mas você provavelmente terá que descobrir alguns problemas ao longo do caminho. Lembre-se, se você precisar de fontes / cabeçalhos para quaisquer componentes do sistema, basta baixá-los do site da Apple para que eles correspondam às versões da sua máquina.

    
por 01.02.2010 / 18:40
1

Tem sido uma dor, mas eu finalmente consegui compilar com sucesso o Apache 2.2.15 com suporte a LDAP no Mac OS X 10.5.8 (PowerBook G4). Espero que as etapas abaixo possam ser usadas também para a versão do servidor. Esse documento: link ajudou muito. Foi o que eu fiz:

  1. Eu baixei e compilei o openldap pela primeira vez e instalei-o em /opt/openldap (por sorte eu poderia usar meu Bibliotecas do BerkeleyDB do Subversion que eu havia instalado anteriormente.)
  2. Então baixei o Apache 2.2.15 e compilei e instalei o apr (diretório de instalação do Apache como você vê é /opt/apache-2.2.15 , eu sei, sou fã de /opt , adivinha onde eu instalei o Subversion):
    cd ~/Downloads/httpd-2.2.15/srclib/apr 

    ./configure
    --prefix=/opt/apache-2.2.15 --enable-threads --enable-other-child 

    make 

    sudo make install 
  1. Depois eu compilei e instalei o apr-util especificando ../apr como caminho apr:

cd ~/Downloads/httpd-2.2.15/srclib/apr-util                                                                                           

    ./configure --prefix=/opt/apache-2.2.15 --with-apr=../apr --with-ldap-lib=/opt/openldap/lib --with-ldap-include=/opt/openldap/include --with-ldap=ldap

    make

    sudo make install

  1. Depois eu compilei o Apache da seguinte forma:
cd ~/Downloads/httpd-2.2.15 

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

./configure --prefix=/opt/apache-2.2.15 --enable-access --enable-actions --enable-alias --enable-asis --enable-auth --enable-auth_dbm --enable-auth_digest --enable-autoindex --enable-cache --enable-cgi --enable-dav --enable-dav_fs --enable-deflate --enable-dir --enable-disk_cache --enable-dumpio --enable-env --enable-expires --enable-fastcgi --enable-file_cache --enable-headers --enable-imap --enable-include --enable-info --enable-log_config  --enable-log_forensic --enable-logio --enable-mem_cache --enable-mime --enable-mime_magic --enable-negotiation --enable-perl --enable-rewrite --enable-setenvif --enable-speling --enable-ssl --enable-status --enable-suexec --enable-unique_id --enable-userdir --enable-usertrack --enable-version --enable-vhost_alias --enable-module=all **--enable-authnz-ldap --with-ldap --enable-ldap** --enable-so **--with-apr=/opt/apache-2.2.15** -**-with-apr-util=/opt/apache-2.2.15** --enable-mods-shared=most --enable-auth-basic **--with-ldap-lib=/opt/openldap/lib --with-ldap-include=/opt/openldap/include**                   

make

sudo make install

Agora funciona como um encanto.

Espero que isso também funcione para você.

    
por 04.05.2010 / 21:47