Проверка токена доступа oAuth 2.0 node.js

У меня есть бэкэнд-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, аналогичную конечной точке токена?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
3 545
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Вы должны использовать библиотеку 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 со сторонними библиотеками.

Спасибо за ответ. Но кажется, что упомянутые вами библиотеки предназначены для создания токенов, а не для проверки токенов. Однако я могу найти несколько других библиотек для того же. Есть еще вопрос. Нужен ли мне секретный/открытый ключ для проверки предоставленного мне токена доступа? Если да, то где найти этот ключ?

user3001381 19.03.2019 10:34

И MSAL, и ADAL также могут проверять JWT — см. этот образец github.com/Azure-Samples/…. Нет, вам не нужно указывать библиотекам проверки JWT открытый ключ, для этого есть документ для обнаружения в стандарте OAuth 2.0.

evilSnobu 19.03.2019 10:40

@evilSnobu Спасибо за пример express. Есть ли пример того же без библиотеки express? В частности, в функции NodeJS Azure?

Ivan Koshelev 31.10.2021 21:40

Другие вопросы по теме