[英]WebApi server only accesses IdentityServer once after it starts
再會。
我的問題:這是正確的工作邏輯嗎? 每次調用我的 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.