У меня есть приложение webAPI Asp.Net 4.6, работающее с JWT. Я использую обмен Поток кода авторизации Okta/token для получения токена. Затем я использую токен во всех своих запросах. Все работает нормально при использовании моей конечной точки Okta dev, но когда я использую нашу производственную конечную точку Okta, аутентифицированные запросы не выполняются. Авторизация и обмен кодом/токеном работают нормально, но когда я запрашиваю данные на свой контроллер WebApi с атрибутом [Authorize], запрос, похоже, ничего не возвращает, даже ошибку. На самом деле запрос в chrome показывает, что запрос никогда не завершается. (Хотя предварительный запрос OPTIONS действительно получает 200). Я также вижу запрос в Wireshark, и ответ никогда не отправляется.
Наиболее очевидный ответ заключается в том, что у меня есть проблема с конфигурацией либо в моем коде, либо в рабочей конечной точке Okta, которая вызывает сбой атрибута Authorize в молча. Но меня больше всего беспокоит то, что я не могу найти способ отладить его. Я попытался наследовать от атрибута Authorize и переопределить все методы, чтобы увидеть, могу ли я что-либо определить, поставив точки останова в эти методы, но методы OnAuthorization, IsAuthorized, HandleUnauthorizedRequest и т. д., похоже, никогда не вызываются.
Запрос не авторизуется. Клиент аутентифицируется через перенаправление на размещенную страницу Okta, которая аутентифицирует пользователя и перенаправляет обратно с кодом, который затем можно использовать для обмена на токен. Я проверил, что токен, который возвращается, в порядке. Проблема возникает, когда клиент пытается сделать запрос к моему серверу, который использует атрибут Authorize. Я использовал wirehark для просмотра клиентского запроса, и он имеет заголовок Bearer и выглядит правильно. Я пытаюсь вставить этот токен в jwt.io, чтобы проверить его, я думаю. Но он отлично работает с учетной записью dev oka, так что...
Скорее всего, это связано с тем, что в вашей продукции нет управления доступом к API. В вашей предварительной версии org. у вас есть API AM бесплатно, поэтому он работает. В вашей производственной организации. Вы должны купить эту функцию. Для тестирования на каждой орг. перейдите в панель администратора Okta> безопасность> API. Вы можете увидеть вкладку «Серверы авторизации» для одного, но не для другого.
Другая проблема может заключаться в том, что если ваша проблема связана с вашей организацией. URL то Окта не выдает ключ к токену нельзя проверить локально.
трудно сказать, не глядя на вашу конфигурацию, но два приведенных выше сценария очень распространены.
Спасибо. Я посмотрю на это и свяжусь с вами.
Так было. Нам нужно было приобрести надстройку для проверки токена.
Если запрос авторизуется, это может означать, что токен действителен и правильно расшифрован. Я бы проверил и удостоверился, что клиент действительно отправляет то, что, по вашему мнению, должно быть в претензиях. Подключите Fiddler или другой HTTP-прокси, чтобы перехватить запрос, захватить токен и вставить его в jwt.io, чтобы увидеть, что вы получаете в данных токена.