我正在开发.netcore 1.1 MVC应用程序,这是一个使用IdentityServer4授权的Open ID Connect客户端。它还使用需要授权的API。
当前,当访问令牌过期并且调用了API时,我遇到了 System.UnauthorizedAccessException “试图执行未经授权的操作”的问题。
我似乎不知道该怎么解决。
这是配置客户端的方式(注意API已添加到作用域):
在Startup.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"
}
});
客户端在IdentityServer4表“ ClientScopes”中定义了以下范围:
此外,[APIName]已添加到ApiResources,ApiClaims和ApiScopes中。
我已经尝试过:
答案 0 :(得分:0)
如果您的访问令牌过期,则需要使用您在登录过程中获得的刷新令牌来续签。