Как проверить подпись на токене на SPA с помощью Azure и Django? - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь использовать почтовый API Microsoft Outlook в нашем веб-приложении.Сначала следовал этому уроку https://docs.microsoft.com/en-us/outlook/rest/javascript-tutorial, но в нем пропущена важная вещь.


[Пропущенная часть]

https://docs.microsoft.com/en-us/outlook/rest/javascript-tutorial#using-the-id-token

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

В примере кода:

  // Per Azure docs (and OpenID spec), we MUST validate
  // the ID token before using it. However, full validation
  // of the signature currently requires a server-side component
  // to fetch the public signing keys from Azure. This sample will
  // skip that part (technically violating the OpenID spec) and do
  // minimal validation

У меня есть серверный компонент, созданный с помощью Django, но яЯ не уверен, как получить открытые ключи подписи из Azure.

Реальная функция, которую я реализую, - это отправка электронной почты через форму HTML.Я решил реализовать эту функцию на стороне клиента по нескольким причинам.Он работает, и я хотел бы сделать аутентификацию безопасной перед развертыванием.

Просто поясните, что я следовал приведенному выше руководству и использую код из этого репо для доступа к API Outlook вместо графика Microsoft.Репо вводится в начале этого урока.

Заранее спасибо.

1 Ответ

0 голосов
/ 28 ноября 2018

Необходимо найти конечную точку jwks или cert в Azure, проверив конфигурацию well-known для Azure (что-то вроде this ).Вы сможете найти все активные и включенные ключи в конечной точке jwks в формате JSON.Вы можете проанализировать эти значения в вашем приложении и выбрать нужный ключ.

...