Как отладить проблему JWT в .Net Framework AuthorizeAttribute

У меня есть приложение webAPI Asp.Net 4.6, работающее с JWT. Я использую обмен Поток кода авторизации Okta/token для получения токена. Затем я использую токен во всех своих запросах. Все работает нормально при использовании моей конечной точки Okta dev, но когда я использую нашу производственную конечную точку Okta, аутентифицированные запросы не выполняются. Авторизация и обмен кодом/токеном работают нормально, но когда я запрашиваю данные на свой контроллер WebApi с атрибутом [Authorize], запрос, похоже, ничего не возвращает, даже ошибку. На самом деле запрос в chrome показывает, что запрос никогда не завершается. (Хотя предварительный запрос OPTIONS действительно получает 200). Я также вижу запрос в Wireshark, и ответ никогда не отправляется.

Наиболее очевидный ответ заключается в том, что у меня есть проблема с конфигурацией либо в моем коде, либо в рабочей конечной точке Okta, которая вызывает сбой атрибута Authorize в молча. Но меня больше всего беспокоит то, что я не могу найти способ отладить его. Я попытался наследовать от атрибута Authorize и переопределить все методы, чтобы увидеть, могу ли я что-либо определить, поставив точки останова в эти методы, но методы OnAuthorization, IsAuthorized, HandleUnauthorizedRequest и т. д., похоже, никогда не вызываются.

  1. Какой лучший способ отлаживать там? Есть ли событие Asp.Net, к которому я могу подключиться, чтобы увидеть, что отправляется/возвращается в Okta для проверки входящего токена?
  2. Почему он молча терпит неудачу? Это похоже на ошибку, которая по замыслу должна всплывать.

Если запрос авторизуется, это может означать, что токен действителен и правильно расшифрован. Я бы проверил и удостоверился, что клиент действительно отправляет то, что, по вашему мнению, должно быть в претензиях. Подключите Fiddler или другой HTTP-прокси, чтобы перехватить запрос, захватить токен и вставить его в jwt.io, чтобы увидеть, что вы получаете в данных токена.

Rick Strahl 21.04.2019 01:44

Запрос не авторизуется. Клиент аутентифицируется через перенаправление на размещенную страницу Okta, которая аутентифицирует пользователя и перенаправляет обратно с кодом, который затем можно использовать для обмена на токен. Я проверил, что токен, который возвращается, в порядке. Проблема возникает, когда клиент пытается сделать запрос к моему серверу, который использует атрибут Authorize. Я использовал wirehark для просмотра клиентского запроса, и он имеет заголовок Bearer и выглядит правильно. Я пытаюсь вставить этот токен в jwt.io, чтобы проверить его, я думаю. Но он отлично работает с учетной записью dev oka, так что...

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

Ответы 1

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

Скорее всего, это связано с тем, что в вашей продукции нет управления доступом к API. В вашей предварительной версии org. у вас есть API AM бесплатно, поэтому он работает. В вашей производственной организации. Вы должны купить эту функцию. Для тестирования на каждой орг. перейдите в панель администратора Okta> безопасность> API. Вы можете увидеть вкладку «Серверы авторизации» для одного, но не для другого.

Другая проблема может заключаться в том, что если ваша проблема связана с вашей организацией. URL то Окта не выдает ключ к токену нельзя проверить локально.

трудно сказать, не глядя на вашу конфигурацию, но два приведенных выше сценария очень распространены.

Спасибо. Я посмотрю на это и свяжусь с вами.

sheamus 22.04.2019 00:37

Так было. Нам нужно было приобрести надстройку для проверки токена.

sheamus 29.04.2019 17:22

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