Я играю с портированием одного из моих приложений API на ядро dotnet (v2), и, возможно, наиболее важной частью этого обновления является работа моей аутентификации.
С этой целью ядобавил пакет IdentityModel Thinkteture в мой проект.
Как работает мой API, он получает заголовок аутентификации в виде токена на предъявителя от вызывающей стороны.Затем я Introspect
этот токен, чтобы проверить, что он приемлем для текущей задачи, и приступить к основной логике.
Однако мне кажется, что я просто упускаю что-то абсолютно базовое в первоначальной настройке кода,поскольку я не могу заставить интроспекцию срабатывать вообще.
После этого у меня есть несколько фрагментов из моего Startup.cs
и контроллера.
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddAuthentication(OAuth2IntrospectionDefaults.AuthenticationScheme)
.AddOAuth2Introspection(options =>
{
options.IntrospectionEndpoint = "#REDACTED#";
options.ClientId = "#REDACTED#";
options.ClientSecret = "#REDACTED#";
});
var x = 1;
}
ItemsController.cs
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "isAuthenticated", $"{User.Identity.IsAuthenticated}" };
}
Эта конечная точка (GET api / items) всегда возвращает false, и мое приложение сервера OIDC никогда не регистрирует никаких попыток связис этим.Точка останова, установленная в коде services.AddAuthentication()
, перехватывает, так что я знаю, что базовые части установки на месте.
Некоторые другие вещи, которые я пробовал:
- наложение
Authorize
декорации на метод (на самом деле не ожидал, что это сработает .. и это не сработало) - Использование параметров
Authority
и разрешение обнаружения конечной точки самоанализа (возможно, я подумал, что мой сервер OIDC может не поддерживать обнаружение, и это вызывало проблемы, но предоставление конечной точки самоанализа некакая-то разница)
Я уверен, что пропустил что-то совершенно тривиальное, но потратив несколько часов на поиск, поиск и пробу разных вещей, я понял, что просто не замечаюЭто.