MicrosoftMicrosoft Azure Developer Associate AZ-204 Certification·CN·更新于 5 Aug 2026
您正在编写一个 .NET Azure Function,用于验证自定义 API 的 Azure AD JWT 访问令牌。该 API 是单租户的,并使用 v2.0 端点。您应该实施哪些验证,以确保仅接受由您的租户为您的 API 颁发且未过期或未被篡改的令牌?请选择三个答案。
选择一个答案
点击一个选项来检查您的答案。
正确答案: 验证 aud 声明与您的 API 的应用程序 ID URI(例如,api://`<app-id-guid>`)匹配,并拒绝具有任何其他受众的令牌。, 从 https://login.microsoftonline.com/`<tenant-id>`/v2.0/.well-known/openid-configuration 检索 OpenID Connect 元数据,并使用 jwks_uri 按密钥 ID (kid) 验证令牌签名。, 通过拒绝超过 exp 的令牌来强制执行令牌生命周期,并允许少量时钟偏差(例如,5 分钟)。.
为什么这是答案
验证 aud 声明与 API 的应用程序 ID URI 匹配是确保令牌是为您的 API 颁发的关键步骤,防止其他应用程序的令牌被误用。从 OpenID Connect 元数据检索 jwksuri 并使用密钥 ID (kid) 验证令牌签名,是验证令牌真实性和完整性的标准方法,确保令牌未被篡改且由可信颁发者签发。通过拒绝超过 exp(过期时间)的令牌并允许少量时钟偏差,可以强制执行令牌的生命周期,防止重放攻击和使用过期令牌,同时考虑到分布式系统中的时间同步问题。
选项“如果签名验证通过,则将为任何租户颁发的令牌视为有效,因为对于 v2.0 令牌,颁发者验证是可选的”是错误的,因为对于单租户应用程序,颁发者验证是强制性的,以确保令牌是由您的特定租户颁发的。