У меня возникла очень странная проблема, и я предполагаю, что мне чего-то не хватает в моей настройке.
У меня есть WebAPI, который защищен IdentityServer4.Это только использование Client_credentials.Если я напишу неправильный ClientId или ClientSecret, то этот пользователь не аутентифицирован, и я не могу подключиться к своему WebAPI.Но если я пишу неправильное имя области действия, запрос все еще обрабатывается, и я получаю ответ обратно, странная часть заключается в том, что выдается исключение, но по какой-то причине оно игнорируется .NET Core Framework.
ЗдесьНекоторая отладочная информация из моего окна выводавыдается исключение, которое говорит о том, что токен не проверен, запрос все еще может продолжаться и выполняться, и ответ отправляется обратно клиенту.
Вот так выглядит ConfigureServices:
services
.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.Authority = "https://localhost:44392/";
options.Audience = "FAKE_SCOPE";
});
И методы Configure ()
app.UseAuthentication();
app.UseMvc();
Вот так выглядит токен JWT:
{
"nbf": 1562062882,
"exp": 1562066482,
"iss": "https://localhost:44392",
"aud": [
"https://localhost:44392/resources",
"bookingApi"
],
"client_id": "clientId",
"scope": [
"bookingApi"
]
}
И это код клиента, вызывающий API.
var idpUrl = "https://localhost:44392/";
var clientId = "clientId";
var clientSecret = "secret";
var scope = "bookingApi";
var accessToken = await GetAccessTokenAsync(new Uri(idpUrl), clientId, clientSecret, scope);
string content = await GetContent(new Uri("https://localhost:44360/v1/bookings"), accessToken);
Наверное, я что-то упустил, когда дело доходит до авторизации, я пробовал разные
services.Authorization()
В методах ConfigureServices (), но это не помогает, думаю, я написал это неправильно.
С наилучшими пожеланиями Магнус