On Tue, Feb 17, 2009 at 5:42 PM, molhacker <wpwalt...@gmail.com> wrote:

>
> I've been running into a very frustrating situation with a seg fault
> in Apache when authenticating Django using LDAP.  The problem is
> intermittent, probably one out of every 5 logins causes the seg fault.
>
> The code I'm using for LDAP (borrowed from the web, thanks Mick)
> authentication is shown below
>
> Here's what I'm running
>
> Django-1.0.2-final
> Python 2.5.2
> httpd-2.2.9
> openldap-2.4.14
> python-ldap-2.3.5
> CentOS release 4.6 (Final)
>
> I've tried both mod_python-3.3.1 and mod_wsgi-2.3 I get the crash in
> both cases.  I've read that there are conflicts with mod_php, but this
> is not the issue, PHP has never been installed on this server.
>
> The code below runs perfectly in a standalone program, it only
> segfaults in Apache.
>
> Any help would be greatly appreciated.
>
> Thanks,
>
> Pat
>
> import ldap
>
> from django.conf import settings
> from django.contrib.auth.models import User, check_password
>
> class LDAPBackend:
>    # from http://blogs.translucentcode.org/mick/tags/django/
>    def authenticate(self, username=None, password=None):
>        username = "%...@example.com" % (username)
>        l = ldap.open('ldap.example.com')
>        try:
>            l.simple_bind_s(username, password)
>            valid = True
>        except ldap.LDAPError, e:
>            valid = False
>        if valid:
>            try:
>                user = User.objects.get(username=username)
>            except User.DoesNotExist:
>                # Create a new user. Note that we can set password to
> anything
>                # as it won't be checked, the password from
> settings.py will.
>                user = User(username=username, password='obtained from
> ldap')
>                user.is_staff = True
>                user.is_superuser = True
>                user.save()
>            return user
>        return None
>
>    def get_user(self, user_id):
>        try:
>            return User.objects.get(pk=user_id)
>        except User.DoesNotExist:
>            return None
>
> >
>

Hi Pat,

do you have any log for this error ?

I have a production code on which I do exactly the same you de (even
creating new users). The only difference is that I don't user open/bind:

    conn = ldap.initialize('ldap://host')
    dn = '' # dn stuff

    try:
      lcon = conn.simple_bind_s(dn %username, password)
      print 'OK'
      return "200"
    except ldap.INVALID_CREDENTIALS, e:
      return "400"

Hope that helps.

Tkm

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to