Как обрабатывать разные ответы от сервера OIDC в ​​.NET Core? - PullRequest
0 голосов
/ 10 октября 2018

В настоящее время я работаю над веб-приложением, в котором используется промежуточное программное обеспечение .NET Core.Пользовательский интерфейс (приложение Angular) получает токен через неявный поток, который затем отправляет на уровень .NET Core mvc, который использует библиотеку OAuth2Introspection , чтобы проанализировать токен (взаимодействуя с сервером PingFederate, которым мы управляем) и помещает заявки в пользователя в контексте http.

Это все работает нормально, но мы сталкиваемся с проблемой, когда иногда в новой среде слой .NET неправильно конфигурируется, сневерный идентификатор клиента OAuth или секрет.Даже если пользовательский интерфейс настроен правильно, он возвращает ту же ошибку 401, которая вызывает перезагрузку пользовательского интерфейса в надежде избавиться от своего «плохого» токена.Токен неплох, однако, просто .NET-уровень не может проверить этот токен из-за наличия собственных неверных учетных данных.

Есть ли какой-нибудь элегантный способ справиться с этим?Я бы предпочел, чтобы мой уровень .NET возвращал ошибку 500 вместо 401, когда проблема на стороне .NET.Я знаю, что код состояния http, возвращаемый с сервера OIDC, отличается в этих ситуациях - при выполнении запроса на самоанализ плохой токен по-прежнему равен 200 (он просто помечен как активный: ложный), а идентификатор / секретный идентификатор клиента - 401с этой стороны (независимо от того, хорош ли сам токен).Я хочу, чтобы код .NET мог реагировать на это и вести себя по-другому, вместо того, чтобы всегда возвращать 401 при любой проблеме связи OIDC.Я ожидал бы, что это будет хуком в моей конфигурации службы, но все это немного запутано библиотечным кодом, и я не уверен, где может быть лучшее место для него.

РЕДАКТИРОВАТЬ:вкратце: мне нужно вернуть разные коды состояния HTTP в зависимости от как моя аутентификация не удалась.Есть ли способ сделать это?

...