簡體   English   中英

ASP.NET Core Web API 是否為每個請求驗證身份驗證令牌?

[英]Are the authentication tokens validated for every request by the ASP.NET Core Web API?

我的 ASP.NET Core Web API 中有以下配置:

// Adds Microsoft Identity platform (AAD v2.0) support to protect this Api
services.AddMicrosoftIdentityWebApiAuthentication(configuration);

services.AddControllers(options =>
{
    var policy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .RequireClaim("email")
        .Build();
    options.Filters.Add(new AuthorizeFilter(policy));
});

我有一個 Angular 客戶端應用程序,它隨每個請求發送AuthToken 我不認為 Web API 應該為每個請求驗證AuthToken ,因為這會影響性能,因為它可能會聯系 Microsoft 驗證端點。

ASP.NET Core Web API 是否為每個請求驗證身份驗證令牌?

是的,每個請求都會驗證令牌。 但是沒有“Microsoft validate endpoint”,它在大多數情況下完全在內存中進行驗證。

運行時實際發生的情況:

  1. 應用啟動
  2. 應用從“authority-uri/.well-known/openid-configuration”下載元數據(例如: https ://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration)
  3. 此 JSON 包含“jwks_uri”(例如https://login.microsoftonline.com/organizations/discovery/v2.0/keys
  4. 應用程序從該 URL 下載密鑰

稍后收到請求:

  1. 應用程序使用之前下載的密鑰之一驗證簽名(它使用令牌標頭中“孩子”匹配的密鑰)
  2. 其他驗證完成

如果我沒記錯的話,默認情況下元數據會在內存中緩存 24 小時。 它會在需要時自動刷新它。

簡而言之,大多數時候根本沒有對 Microsoft 端點的請求。 您的應用僅使用一些 CPU 時間來驗證內存中的令牌。 您的數據庫查詢很可能會完全抵消令牌驗證的開銷。

應在對敏感端點的每個請求上驗證身份驗證令牌,以確保訪問端點的用戶有權訪問它。 對性能的影響應該可以忽略不計。 如果未驗證令牌,則任何用戶都可以使用欺詐性令牌發出請求,並且您的 API 仍會為請求提供服務,從而允許未經身份驗證的用戶訪問端點。

暫無
暫無

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

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