Проверка токена доступа AzureAD с помощью Django-REST-фреймворка

Прежде чем что-либо сделать, я хотел бы предупредить вас о моих крайне ограниченных знаниях по этому вопросу. Теперь, когда вы предупреждены, я хочу спросить, как я могу проверить токен доступа azureAD с помощью Django/django-rest-framework.

У меня есть приложение, в которое мне нужно войти с помощью azureAD, что означает, что мне нужно получить токен доступа от azureAD, и, к счастью, это будет сделано на стороне frontend с помощью Angular, что мне нужно сделать, это проверить этот токен на стороне backend с помощью django/django-rest-framework, и я понятия не имею, с чего начать, может ли кто-нибудь предложить способ сделать это или направить меня в правильном направлении?

Большое спасибо.

Ок, значит, я обязан этим своему прошлому "я".

Я получил авторизацию из заголовков запроса, нарезал ее так, чтобы это был только токен, и использовал url, аудиторию и пакет jwt для декодирования, вот код:

url = "https://login.microsoftonline.com/5c9b264f-33ad-4093-bb65-8d14aaec9f63/discovery/v2.0/keys"
valid_audience = 'api://0d44e6da-8e5b-4e98-94b5-5f02ce228647'

response = urlopen(url)
jwks = json.loads(response.read())


def is_logged_in(func):
    def wrapper(self, *args, **kwargs):
        token = self.headers['Authorization'][7:]  # Need to test this against the frontend request.
        try:
            jwks_client = PyJWKClient(url)
            signing_key = jwks_client.get_signing_key_from_jwt(token)

            decoded = jwt.decode(token,
                             signing_key.key,
                             algorithms=["RS256"],
                             audience=valid_audience)

            return func(self, *args, **kwargs)
        except Exception as e:
            print(e)
            return HttpResponse('Unauthorized', status=401)

    wrapper.__name__ = func.__name__
    return wrapper

Также я поместил все это в декоратор, чтобы я мог спрятать все мои apis за ним.

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