Azure Active Directory добавляет пользовательские данные в токен Oauth2.
Я использую конечную точку аутентификации https://login.microsoftonline.com/tenant-id/oauth2/v2.0/token программно (Nodejs) для возврата токена, который будет использоваться против моего API. У меня все правильно настроено для отправки запроса с использованием «секрета клиента», который я устанавливаю на портале Azure — служба регистрации приложений.
Это выдает действительный токен, который я могу позже проверить с помощью библиотеки Passport azure AD npm . Однако я искал способ каким-то образом добавить больше метаданных к этому токену (например, пользовательское имя пользователя), чтобы, когда он будет проверен и проанализирован моим сервером при будущих запросах, я мог извлечь эту информацию.
При выдаче токенов с использованием внешней библиотеки приложений (например, msal) у меня есть доступ к некоторой информации о пользователе в токене (например, его oid и адрес электронной почты). Я хотел бы иметь возможность «расширить» токен, сгенерированный секретом клиента, чтобы он также содержал пару настраиваемых полей, которые я могу использовать после его проверки и анализа.
Надеюсь, это достаточно ясно. Я потерялся в том, как этого добиться. Спасибо
1 ответ
Обычным требованием для API является авторизация на основе утверждений, хранящихся в бизнес-данных, например ролей или других пользовательских данных.
ОПЦИЯ 1
В идеале сервер авторизации может во время выдачи токена обращаться к API или базе данных, чтобы включить настраиваемые утверждения. Однако это не всегда поддерживается.
ВАРИАНТ 2
Другой вариант заключается в том, чтобы API обрабатывал входящий токен доступа вClaimsPrincipal
и включить пользовательские значения в этот момент. Для примера см. этот мой код.
КОНФИДЕНЦИАЛЬНОСТЬ
При добавлении дополнительных утверждений вы также должны быть осторожны с раскрытием конфиденциальных данных в JWT, возвращаемых интернет-клиентам. Например, если вы включаете имена и адреса электронной почты, они легко читаются, и иногда это может быть проблемой безопасности.