Мы настроили Identity Server 4 с .Net Core 2.1.У нас есть ASP.Net Web API на .Net 4.6.Это не может быть перенесено в Core.Я установил IdentityServer3.AccessTokenValidation в этом проекте API вместе с OWN и другими необходимыми пакетами.Я могу использовать клиента и получить токен доступа от IdentityServer.Когда клиент использует этот токен с API, я получаю 401. Я искал в Интернете решения, но не могу найти ничего, что я мог бы использовать для этой работы.Я попробовал это - https://github.com/IdentityServer/IdentityServer3.AccessTokenValidation/issues/164, но не сработало.Я не могу найти образцы.Поэтому у меня вопрос: нельзя ли использовать IdentityServer3.AccessTokenValidation для общения с IDS4?
Нужно ли вместо этого настраивать IDS3?
UPDATE
Я включил подробное ведение журнала и получил следующее
Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request starting HTTP/1.1 POST http://localhost:44333/connect/introspect application/x-www-form-urlencoded 70
IdentityServer4.Hosting.IdentityServerMiddleware:Information: Invoking IdentityServer endpoint: IdentityServer4.Endpoints.IntrospectionEndpoint for /connect/introspect
IdentityServer4.Validation.ApiSecretValidator:Error: API validation failed.
IdentityServer4.Endpoints.IntrospectionEndpoint:Error: API unauthorized to call introspection endpoint. aborting.
Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request finished in 26.5186ms 401
Microsoft.AspNetCore.Server.Kestrel:Information: Connection id "0HLIJ2C0UKBLN", Request id "0HLIJ2C0UKBLN:00000008": the application completed without reading the entire request body.
Ниже приведен мой код API в методе конфигурации
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
{
Authority = "https://localhost:44333",
RequiredScopes = new[] { "api" },
ClientId = "api",
ClientSecret = "secret",
//DelayLoadMetadata = true
});
app.UseWebApi(config);
Код на стороне IDS4 для ApiResource.
public static IEnumerable<ApiResource> GetApiResources()
{
return new List<ApiResource>
{
new ApiResource("api", "MyApi") { ApiSecrets = { new Secret("secret".Sha256()) } }
};
}
ОБНОВЛЕНИЕ 2
Да У меня включена трассировка.Немного поиграв с кодом и переустановив пакеты, я теперь получаю другую ошибку. Запрос сделан для / connect / accesstokenvalidation.Эта конечная точка недоступна в IDS4
Microsoft.AspNetCore.Hosting.Internal.WebHost: Информация: запрос запуска HTTP / 1.1 POST http://localhost:44333/connect/accesstokenvalidation application / x-www-form-urlencoded 70 Microsoft.AspNetCore.Hosting.Internal.WebHost: Информация: запрос завершен за 3,405 мс 404 Microsoft.AspNetCore.Server.Kestrel: Информация: идентификатор соединения "0HLIJ9RBG591K", идентификатор запроса "0HLIJ9RBG591K: 0000000A": приложение выполнено без чтения всего тела запроса.