簡體   English   中英

WebApi服務器啟動后只訪問一次IdentityServer

[英]WebApi server only accesses IdentityServer once after it starts

再會。

  1. 我使用 IdentityServer 請求訪問令牌
  2. 啟動 webapi 服務器后,我正在訪問我的 API。
  3. 之后,使用當前的訪問令牌,即使 IdentityServer 已關閉,我也可以訪問我的 api。

我的問題:這是正確的工作邏輯嗎? 每次調用我的 api 時不應該調用 IdentityServer 並檢查訪問令牌嗎?

如果沒有,如果我的用戶憑據已更改並且我需要更新令牌,我該如何拒絕訪問令牌?

啟動.cs:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseRouting();
            app.UseAuthentication();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers().RequireAuthorization("ApiScope");
                //.RequireAuthorization("AdminSecure");
            });
        }

public void ConfigureServices(IServiceCollection services)
        {
           services.AddAuthentication("Bearer")
                .AddJwtBearer("Bearer", options =>
                {
                    options.Authority = Configuration.GetValue<string>("IdentityServerUrl");
                    options.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateAudience = false
                    };
                });
            services.AddAuthorization(options =>
            {
                options.AddPolicy("ApiScope", policy =>
                policy.RequireClaim("client_id", "secret"));

                options.AddPolicy("UserSecure", policy =>
                policy.RequireClaim("roleType", "userCode"));

                options.AddPolicy("AdminSecure", policy =>
                policy.RequireClaim("roleType", "adminCode"));
            });
}

這是正確的行為,您的 API 可以從 IdentityServer 脫機工作。 API 只需要從 IdentityServer 下載簽名密鑰,API 默認將它們緩存 24 小時,以便驗證它們是否有效。

您描述的問題是通過使用短期訪問令牌解決的,例如 1-10 分鍾? 然后在客戶端使用刷新令牌來更新令牌。

或者,您的 API 可以手動詢問令牌自省端點以檢查訪問令牌是否仍然有效。

暫無
暫無

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

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