[=10s asp net core 中间件完成了什么确切的令牌验证?

What exact token validation is done by Microsoft.Identity.Web’s aspnet core middleware?

我正在构建一个使用 AAD(稍后是 B2c)对用户进行身份验证的 aspenet 核心应用程序。

我了解必须验证 OAuth2 和 OpenID Connect JWT 令牌。很重要。

我正在查看此代码示例:

https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/blob/master/4-WebApp-your-API/4-3-AnyOrg/TodoListService/Startup.cs#L34

该示例使用此 Microsoft.Identity.Web 的中间件进行身份验证。

            services.AddMicrosoftIdentityWebApiAuthentication(Configuration)
                    .EnableTokenAcquisitionToCallDownstreamApi()
                    .AddInMemoryTokenCaches();

以下哪些验证是由上述中间件完成的?

  1. 验证 JWT 的签名
  2. 验证不早于失效时间
  3. 验证随机数

是否有任何文档可以确认 Microsoft.Identity.Web 自动完成哪些确切验证以及我需要手动执行哪种类型的验证(我认为发行人声明是手动代码)

Microsoft.Identity.Web - 主包。所有使用 Microsoft Identity Web 的应用都需要

Microsoft 建议您在使用 ASP.NET Core 开发 Web API 时使用 Microsoft.Identity.Web NuGet 包。

它有很多依赖项,你可以从这里查看详细信息 Link

.NetCoreApp3.1 的依赖之一是 Microsoft.AspNetCore.Authentication.JwtBearer (>= 3.1.18)

JwtBearer 中间件,与 Web 应用程序中的 OpenID Connect 中间件一样,根据 TokenValidationParameters 的值验证令牌。根据需要解密令牌,提取声明,并验证签名。中间件然后通过检查此数据来验证令牌:

Audience: The token is targeted for the web API.

Sub: It was issued for an app that's allowed to call the web API.

Issuer: It was issued by a trusted security token service (STS).

Expiry: Its lifetime is in range.

Signature: It wasn't tampered with.

有关更多信息,您可以关注此 MS documention.