Сопоставление ролей в AzureAD с группами Django

Хорошо, теперь я могу сделать SSO в Django через AzureAD, используя django-microsoft-auth. Но я хотел бы также управлять группами. Для этого мы настроили передачу ролей в токене. Но как мне сопоставить их с группами Django? Я не могу найти ни одного примера для этого

Нашел. Для тех, у кого такой же вопрос, вам придется использовать настройку 'MICROSOFT_AUTH_AUTHENTICATE_HOOK'

Я сделал модуль в моем "приложении" под названием aad.py:

import jwt
def add_to_group(user, token):
    from django.contrib.auth.models import Group
    id_token = token['id_token']
    token_data = jwt.decode(id_token, options={"verify_signature": False})
    roles = token_data.get('roles', [])
    user.groups.clear()
    for r in roles:
        current_group, created = Group.objects.get_or_create(name=r)
        current_group.user_set.add(user)

В настройках я добавил следующую настройку:

MICROSOFT_AUTH_AUTHENTICATE_HOOK = "myApp.aad.add_to_group"

Конечно, можно было бы сделать все более аккуратно, но пока это работает.

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