LDAP do Django - Como mapear o campo de descrição para o grupo Django

2

Estou tentando configurar a autenticação LDAP com meu aplicativo Django usando o Django-Auth

A idéia básica que eu quero fazer é que qualquer usuário LDAP com "IT - Help Desk" na descrição seria mapeado para um determinado grupo do Django, um usuário com "Admin" na descrição iria para outro grupo do Django, e ninguém mais poderia entrar.

(Há motivos herdados que eu tenho que usar o campo de descrição, então isso não é uma opção para mudar)

Atualização: Algumas partes da conversa de acompanhamento foram movidas por aqui .

    
por Greg_the_Ant 28.03.2011 / 20:27

1 resposta

5

O django-auth-ldap 1.0.9 (lançado em 27/03) adicionou um par de sinais do Django que os clientes podem usar para fazer uma população personalizada de objetos de usuário e perfil. Eu recomendaria conectar-se ao sinal populate_user e usar os atributos LDAP para atualizar o usuário associação ao grupo. por exemplo:

import django_auth_ldap.backend

def update_groups(sender, user=None, ldap_user=None, **kwargs):
    # Remember that every attribute maps to a list of values
    descriptions = ldap_user.attrs.get("description", [])

    if "IT - Help Desk" in descriptions:
        # Add user to group
    else:
        # Remove user from group

django_auth_ldap.backend.populate_user.connect(update_groups)

É até seguro combinar com AUTH_LDAP_MIRROR_GROUPS , como sinal é enviado depois que toda a população interna de usuários estiver completa.

    
por 28.03.2011 / 23:53