У меня есть бэкэнд-API, написанный на экспресс-фреймворке node.js. Мне нужно реализовать с ним oAuth 2.0 (тип гранта client_credentials). Я узнал, что внешний интерфейс (который является вызывающим API) запрашивает https://login.microsoftonline.com/IDENTIFIER_STRING/oauth2/токен с client_id и client_secret и получает в ответ токен доступа. После этого FE отправит запрос к моему API с заголовком авторизации с этим токеном доступа. Теперь мой вопрос: как я могу проверить этот токен доступа и предоставить доступ запрашивающей стороне? Должен ли я проверять его в автономном режиме как JWT с помощью некоторого открытого ключа и некоторой библиотеки node.js? Или мне нужно сделать это онлайн, отправив токен доступа в некоторую конечную точку поставщика oAuth, аналогичную конечной точке токена?





Как потребитель токена проверка выполняется в автономном режиме, если иное не указано эмитентом.
Вы должны использовать библиотеку JWT, не сворачивайте свою собственную логику проверки, это нетривиально для правильной реализации.
Используйте MSAL для приложений Azure ADv2 —
https://github.com/AzureAD/microsoft-authentication-library-for-jshttps://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-основы
Для v1 используйте старый ADAL —
https://github.com/AzureAD/azure-activedirectory-library-for-js
конечная точка v1 и v2 —
https://docs.microsoft.com/en-us/azure/active-directory/develop/azure-ad-endpoint-comparison
Azure AD совместим с OAuth 2.0 и Open ID Connect. Это действительно означает, что вы также должны иметь возможность проверять JWT со сторонними библиотеками.
И MSAL, и ADAL также могут проверять JWT — см. этот образец github.com/Azure-Samples/…. Нет, вам не нужно указывать библиотекам проверки JWT открытый ключ, для этого есть документ для обнаружения в стандарте OAuth 2.0.
@evilSnobu Спасибо за пример express. Есть ли пример того же без библиотеки express? В частности, в функции NodeJS Azure?
Спасибо за ответ. Но кажется, что упомянутые вами библиотеки предназначены для создания токенов, а не для проверки токенов. Однако я могу найти несколько других библиотек для того же. Есть еще вопрос. Нужен ли мне секретный/открытый ключ для проверки предоставленного мне токена доступа? Если да, то где найти этот ключ?