簡體   English   中英

UnauthorizedAccessException消耗了需要訪問令牌的API

[英]UnauthorizedAccessException consuming an API that requires access token

我正在開發.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”中定義了以下范圍:

  • 角色
  • 電子郵件
  • 輪廓
  • OpenID的
  • offline_access
  • [APIName]

此外,[APIName]已添加到ApiResources,ApiClaims和ApiScopes。

我已經嘗試過:

  • 將客戶端中的AllowOfflineAccess設置為“ true”
  • 將客戶端中的UpdateAccessTokenClaimsOnRefresh設置為“ true”

如果您的訪問令牌過期,則需要使用您在登錄期間獲得的刷新令牌來續訂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM