Я занимаюсь разработкой приложения .netcore 1.1 MVC, которое является клиентом Open ID Connect с использованием авторизации с IdentityServer4.Он также использует API, который требует авторизации.
В настоящее время, когда срок действия маркера доступа истекает, и выполняется вызов API, я испытываю System.UnauthorizedAccessException 'попытку выполнить несанкционированный доступ.операция.
Я не могу понять, как это исправить.
Так настроен клиент (обратите внимание, что API добавлен в область):
В автозагрузке.cs, я зарегистрировал API, который я хочу использовать, следующим образом:
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions()
{
AuthenticationScheme = "oidc",
SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme,
Authority = identityServerServiceOptions.GetValue<string>("AuthorityUrl"),
RequireHttpsMetadata = false,
ResponseType = OpenIdConnectResponseType.CodeIdToken,
ClientId = identityServerServiceOptions.GetValue<string>("ClientId"),
ClientSecret = identityServerServiceOptions.GetValue<string>("ClientSecret"),
GetClaimsFromUserInfoEndpoint = true,
TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
NameClaimType = "name",
RoleClaimType = "role"
},
SaveTokens = true,
Scope =
{
"[APIName]",
"roles",
"offline_access"
}
});
Клиент имеет следующие области, определенные в таблице ClientScopes IdentityServer4:
- роли
- электронная почта
- профиль
- openid
- offline_access
- [APIName]
Также [APIName] было добавлено к ApiResources, ApiClaims и ApiScopes.
Я уже пробовал:
- Установка AllowOfflineAccess в клиентах на «true»
- Установка UpdateAccessTokenClaimsOnRefresh в клиентах на «true»'