Проверка JWT от корпорации Майкрософт с помощью .Net Core C#

У меня есть приложение .Net Core, которое получает токен JWT от Microsoft (MS используется в качестве сервера OAuth). У меня есть следующие настройки на стороне MS:

  • Идентификатор приложения: UUID
  • Пароль (генерируется MS)
  • Закрытый ключ (защищен паролем, предоставленным мной)

Я получаю его в виде строки и конвертирую вJwtSecurityToken, и я вижу свое имя, электронную почту и все остальное…

Вопрос: как я могу проверить, что этот маркер действительно был выдан MS для моего приложения? Я уверен, что должен использоватьValidateToken(string token, TokenValidationParameters validationParameters, out SecurityToken validatedToken), но похоже, что я не могу сделать TokenValidationParametersправильно.

1 ответ

  1. Возможно, я неправильно понимаю вас, но если маркер был выдан из MS, маркер не должен нуждаться в проверке в клиенте.

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

    Вы можете использовать информацию в JWT, если она не зашифрована, но это на ваш собственный риск. Он может быть изменен, и сервер, который выдает JWT, может изменить содержимое или структуру объекта JSON внутри, изменить подписанный JWT на зашифрованный JWTs или изменить его на случайный маркер , не нарушая ваш контракт, поэтому ваше приложение, вероятно, не должно полагаться на это содержимое.