Без журналов не могу быть уверен, что является проблемой в вашем случае, но вот несколько исправлений, которые я сделал, чтобы заставить его работать:
- В
Statup.cs
классе проекта IdentityServer - Измените
AccessTokenJwtType
на JWT
, значение по умолчанию для IdentityServer4 равно at+jwt
, но. Net Framework Api (OWIN / Katana) требует JWT
. - Добавьте
/resources
aud, установив для EmitLegacyResourceAudienceClaim
значение true, это удаляется на IdentityServer4.
Вы можете проверить токен доступа на https://jwt.ms/, проверив "typ"
и "aud"
.
var builder = services.AddIdentityServer(
options =>
{
options.AccessTokenJwtType = "JWT";
options.EmitLegacyResourceAudienceClaim = true;
});
В
Statup.cs
классе. Net Framework API проекта, установите
ValidationMode
в
ValidationMode.Local
, конечная точка проверки маркера пользовательского доступа, используемая этим методом, будет удалена в IdentityServer4.
app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
{
Authority = "https://localhost:44357",
// For access to the introspection endpoint
ClientId = "secret_client_id",
ClientSecret = "secret".ToSha256(),
RequiredScopes = new[] { "apiscope" },
ValidationMode = ValidationMode.Local,
});
У меня есть пример рабочей реализации здесь
Я настоятельно рекомендую вам собирать журналы API, это помогает найти актуальную проблему в вашем случае и найти исправление. здесь - это пример включения журнала OWIN на Api.