LDAP Authentifizierung mit WSGI/Barrel

Code-Stücke können hier veröffentlicht werden.
Antworten
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Code: Alles auswählen

import ldap
import barrel.basic

class LDAPAuth(barrel.basic.BasicAuth):
    realm = config.AUTH_REALM
    def __init__(self, url, domain, app):
        self.url = url
        self.domain = domain
        self.password_cache = {}
        barrel.basic.BasicAuth.__init__(self, app)

    def valid_user(self, username, password):
        if self.password_cache.get(username) == password:
            return True
        connection = ldap.initialize(self.url)
        try:
            connection.simple_bind_s(self.domain + username, password)
        except ldap.INVALID_CREDENTIALS:
            return False
        self.password_cache[username] = password
        return True
Getestet habe ich das ganze mit ActiveDirectory.

Beispiele für die Parameter:
url: ldap://example.com:389/
domain: company\

Probleme: Der Cache hat keinen Timeout, sollte mit einem schönen Decorator ersetzt werden.

Vielleicht hilft es ja dem einen oder anderen.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Antworten