Сопоставление ролей в 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"
Конечно, можно было бы сделать все более аккуратно, но пока это работает.