Altri filtri di ricerca in AuthLDAPURL

Posso avere più di un filter di ricerca in AuthLDAPURL?

Esempio filter uid:

<Location /test/> AuthType Basic AuthName "Test" AuthBasicProvider ldap AuthUserFile /dev/null AuthLDAPURL ldap://example.test.com/o=test,c=com?uid AuthLDAPBindDN "******" AuthLDAPBindPassword ****** require ldap-group cn=group01,o=test,c=com </Location> 

Dobbiamo cercare uid o posta. Piace…

 AuthLDAPURL ldap://example.test.com/o=test,c=com?uid|mail 

Soluzione (funziona per me):

Testato con Apache 2.4 http://httpd.apache.org/docs/current/mod/mod_authn_core.html

 <AuthnProviderAlias ldap ldap-uid> AuthLDAPBindDN "******" AuthLDAPBindPassword ****** AuthLDAPURL "ldap://example.test.com/o=test,c=com?uid??(&(isMemberOf=cn=group01,o=test,c=com))" </AuthnProviderAlias> <AuthnProviderAlias ldap ldap-mail> AuthLDAPBindDN "******" AuthLDAPBindPassword ****** AuthLDAPURL "ldap://example.test.com/o=test,c=com?mail??(&(isMemberOf=cn=group01,o=test,c=com))" </AuthnProviderAlias> <Location "/test/"> Order deny,allow Allow from all AuthType Basic AuthName "Login with mail or uid" AuthBasicProvider ldap-uid ldap-mail LDAPReferrals Off Require valid-user </Location> 

Thx Tonin!

One Solution collect form web for “Altri filtri di ricerca in AuthLDAPURL”

Suppongo che si intenda cercare attributi uid o mail (non filtrando su quelli). Non è ansible, subito, utilizzare due diversi attributi nell'URL LDAP, anche se RFC 2255 lo consente.

solo mod_authnz_ldap: imansible

La documentazione Apache mod_authnz_ldap indica che l'URL deve essere come: ldap://host:port/basedn?attribute?scope?filter con

  • attributo : l'attributo da cercare. Anche se RFC 2255 consente un elenco di attributi separati da virgole, verrà utilizzato solo il primo attributo, indipendentemente da quanti siano forniti . Se non vengono forniti attributi, l'impostazione predefinita è utilizzare UID. È una buona idea scegliere un attributo che sarà unico in tutte le voci del sottostrato che utilizzerai.
  • filter : un filter di ricerca LDAP valido. Se non viene fornito, il valore predefinito è (objectClass = *), che cercherà tutti gli oggetti dell'tree. I filtri sono limitati a circa 8000 caratteri (la definizione di MAX_STRING_LEN nel codice sorgente di Apache). Questo dovrebbe essere più che sufficiente per qualsiasi applicazione.

Utilizzando 2 provider con mod_authn_alias

Tuttavia, aggiungendo un altro module apache, vale a dire mod_authn_alias , è ansible utilizzare 2 differenti LDAPURL come provider di authentication diversi. Per farlo funzionare, è ansible aggiungere un nuovo file (che includerà alla radice della configuration di apache) contenente:

 # Different LDAP attributes to be used as login <AuthnProviderAlias ldap ldap-uid> AuthLDAPURL ldap://example.test.com/o=test,c=com?uid AuthLDAPBindDN "******" AuthLDAPBindPassword ****** </AuthnProviderAlias> <AuthnProviderAlias ldap ldap-mail> AuthLDAPURL ldap://example.test.com/o=test,c=com?mail AuthLDAPBindDN "******" AuthLDAPBindPassword ****** </AuthnProviderAlias> 

Quindi, nell'istruzione <Location> , utilizza la seguente configuration:

 <Location /test/> AuthType Basic AuthName "Test" AuthBasicProvider ldap-uid ldap-mail AuthUserFile /dev/null require ldap-group cn=group01,o=test,c=com </Location> 

In questo modo si cercherà di eseguire l'authentication utilizzando l' uid e se non riesce, provare a utilizzare l'attributo di mail . Con questo tipo di configuration, è ansible aggiungere altretanti diversi provider LDAPURL come si desidera.

Devi tuttavia stare attenti a una cosa, però la ricerca LDAP deve restituire un singolo valore , altrimenti non sarai sicuro di quale tra le voci multiple verranno utilizzate per controllare la password. A tal fine, è ansible utilizzare uno scopo ( one invece di sub ) o un filter di ricerca che limiterà il numero di voci restituite.

Il file aggiuntivo deve essere aggiunto alla configuration di apache al di fuori della direttiva <Location> o di qualsiasi <VirtualHost> . Deve essere incluso al livello radice della configuration apache. E il module authn_alias deve essere triggersto, ovviamente.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.