Попытка автоматического назначения группы django пользователям, созданным в процессе AAD/SSO

Я провел последние 4 часа, просматривая множество ресурсов, пытаясь решить эту проблему, и ничего не добился. Суть в том, что я пытаюсь добавить группу по умолчанию ко всем новым созданным пользователям. Пользователи создаются при первой аутентификации через AAD/SSO, но когда они входят, у них нет аутов. Я бы хотел, чтобы они получали группу по умолчанию, когда процесс SSO создает пользователя (например, из пост-сохранения приемника объекта User). Я просмотрел десятки примеров, использующих что-то очень похожее на приведенный ниже код. Хорошо, процесс запускается, не выдает никаких ошибок и успешно создает запись CustomUserProfile, но пользователю так и не назначается группа по умолчанию. С вероятностью 110% группа существует, и get находит группу (мы делали упражнения, чтобы подтвердить это).

Что я делаю неправильно? Почему этот процесс не создает групповое назначение (или выдает ошибку, чтобы сообщить мне, что здесь происходит)?

использование django 3.2.8, Python 3.8.7

@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    try:
        if created:
            instance.groups.add(Group.objects.get(name='Basis - Standard Access'))
            CustomUserProfile.objects.create(user=instance).save()
    except Exception as err:
        print('Error creating basis user profile!')
        print(err)

Итак, мне просто нужно было потратить 5 часов и/или написать сюда. Проблема не связана с django, а связана с инструментом, который я использую для AAD/SSO: django-auth-adfs.

После повторного изучения docs я обнаружил, что GROUPS_CLAIM явно не установлен на None, это удалит все группы из назначения групп django для пользователя. Я установил значение None и что вы знаете... это работает!!!

Размещаю это разрешение, чтобы помочь другой бедной душе, которая заблудилась и просматривает множество старых сообщений, задаваясь вопросом, почему оно просто не появляется. В конце концов, читайте документацию... всю документацию.

Вернуться на верх