コード例 #1
0
    def authenticate(self, username=None, password=None):
        if not password:
            return None

        username = username.lower()
        # works for username and [email protected]
        username = username.lower().split('@')[0]

        try:
            # initialise the LDAP manager
            l = LDAPManager()

            result_data = l.search(username,field="cn")
            # If the user does not exist in LDAP, Fail.
            if not result_data:
                return None
            # Attempt to bind to the user's DN.
            l.bind(result_data[0][0],password)
            # Success. The user existed and authenticated.
            # Get group
            group = None
            if result_data[0][1].get("carthageFacultyStatus"):
                if result_data[0][1]["carthageFacultyStatus"][0] == "A":
                    group = "carthageFacultyStatus"

            if result_data[0][1].get("carthageStaffStatus"):
                if result_data[0][1]["carthageStaffStatus"][0] == "A":
                    group = "carthageStaffStatus"

            if result_data[0][1].get("carthageStudentStatus"):
                if result_data[0][1]["carthageStudentStatus"][0] == "A":
                    group = "carthageStudentStatus"

            # Get the user record or create one with no privileges.
            try:
                user = User.objects.get(username__exact=username)
                if not user.last_name:
                    user.last_name = result_data[0][1]['sn'][0]
                    user.first_name = result_data[0][1]['givenName'][0]
                    user.save()
                try:
                    if group:
                        # add them to their group
                        # or 'except' if they already belong
                        g = Group.objects.get(name__iexact=group)
                        g.user_set.add(user)
                except:
                    return user
            except:
                # Create a User object.
                user = l.dj_create(
                    result_data, auth_user_pk=settings.LDAP_AUTH_USER_PK
                )

            # Success.
            return user

        except Exception, e:
            # Name or password were bad. Fail permanently.
            return None
コード例 #2
0
def main():
    """
    main method
    """

    # initialize the manager
    l = LDAPManager()
    """
    l = LDAPManager(
        protocol=settings.LDAP_PROTOCOL_PWM,
        server=settings.LDAP_SERVER_PWM,
        port=settings.LDAP_PORT_PWM,
        user=settings.LDAP_USER_PWM,
        password=settings.LDAP_PASS_PWM,
        base=settings.LDAP_BASE_PWM
    )
    """
    result = l.search(value,field=field)
    print result

    # authenticate
    if password:
        auth = l.bind(result[0][0],password)
        print auth
        # create a django user
        if create:
            user = l.dj_create(result[0][1]["cn"][0],result)
            print user
コード例 #3
0
def main():
    """
    main method
    """

    # initialize the manager
    l = LDAPManager()
    """
    l = LDAPManager(
        protocol=settings.LDAP_PROTOCOL_PWM,
        server=settings.LDAP_SERVER_PWM,
        port=settings.LDAP_PORT_PWM,
        user=settings.LDAP_USER_PWM,
        password=settings.LDAP_PASS_PWM,
        base=settings.LDAP_BASE_PWM
    )
    """
    result = l.search(value,field=field)

    if field == 'carthageDob':
        for r in result:
            p = "{cn[0]}|{carthageNameID[0]}|{sn[0]}|{givenName[0]}|{mail[0]}"
            print p.format(**r[1])
    else:
        print result

    # authenticate
    if password:
        auth = l.bind(result[0][0],password)
        print auth
        # create a django user
        if create:
            user = l.dj_create(result[0][1]['cn'][0],result)
            print user
コード例 #4
0
    def authenticate(self, username=None, password=None, request=None):
        if not password:
            return None
        username = username.lower()

        l = LDAPManager()
        '''
        l = LDAPManager(
            protocol=settings.LDAP_PROTOCOL_PWM,
            server=settings.LDAP_SERVER_PWM,
            port=settings.LDAP_PORT_PWM,
            user=settings.LDAP_USER_PWM,
            password=settings.LDAP_PASS_PWM,
            base=settings.LDAP_BASE_PWM
        )
        '''

        try:
            result_data = l.search(username,field='cn')
            # If the user does not exist in LDAP, Fail.
            if not result_data and request:
                request.session['ldap_account'] = False
                return None

            # Attempt to bind to the user's DN.
            l.bind(result_data[0][0],password)
            # Success. The user existed and authenticated.
            # Get the user record or create one with no privileges.
            try:
                user = User.objects.get(username__exact=username)
            except:
                # Create a User object.
                user = l.dj_create(result_data)

            # TODO: update the alumni container
            return user
        except ldap.INVALID_CREDENTIALS:
            # Name or password were bad. Fail permanently.
            if request:
                request.session['ldap_cn'] = username
                request.session['ldap_account'] = True
                request.session['ldap_questions'] = self.get_questions(username)
            return None
コード例 #5
0
# initialise the LDAP manager
l = LDAPManager()

result_data = l.search(username,field="cn")

if not result_data:
    print result_data
    print "fail"
else:
    print result_data
    print "\n\n"
    print "dn = %s" % result_data[0][0]
    print "\n\n"
    print "Attempt to bind to the user's DN."
    print "\n\n"
    l.bind(result_data[0][0],password)

# Get group
group = None
if result_data[0][1].get("carthageFacultyStatus"):
    if result_data[0][1]["carthageFacultyStatus"][0] == "A":
        group = "carthageFacultyStatus"
        print group

if result_data[0][1].get("carthageStaffStatus"):
    if result_data[0][1]["carthageStaffStatus"][0] == "A":
        group = "carthageStaffStatus"
        print group

if result_data[0][1].get("carthageStudentStatus"):
    if result_data[0][1]["carthageStudentStatus"][0] == "A":