使用连续访问评估保护应用程序

本文将帮助开发人员通过连续访问评估提高应用程序安全性。 你将了解如何确保应用程序在从 Microsoft Entra ID 获取访问令牌时获得访问资源的授权,从而确保应用程序中的零信任支持

当 Microsoft Entra ID 发放这些访问令牌时,它将充分评估该授权的条件。 Microsoft Entra ID 在每次为初始令牌请求发放令牌和刷新令牌时,都会执行标准授权操作,如确保应用程序已获得同意

Microsoft Entra ID 主要使用 JSON 网络令牌 (JWT) 作为访问令牌。 资源 API 可以解码、验证和解释 JWT,而无需在每次调用资源 API 时回调 Microsoft Entra ID。 JWT 标准定义了一个过期声明,用于标识到期时或到期后你不得接受 JWT 令牌进行处理的时间。 默认情况下,Microsoft Entra 令牌在发放后 60 到 90 分钟过期。 在此期间,应用程序必须缓存和使用访问令牌,Microsoft Entra ID 不会评估授权条件。

评估发放令牌之外的条件

当 Microsoft Entra ID 发放令牌时,Microsoft 客户对用户条件更改和策略更改强制执行之间的滞后表示担忧。 这种缩短令牌生存期的方法可能会降低用户体验和可靠性,而不会消除风险。

一种解决方案是评估对受保护资源每次调用的条件。 实现此强制措施的最常见方法是令牌自检。 令牌自检不会对令牌使用 JWT 格式。 相反,令牌自检使用资源 API 无法解释的不透明字符串。 资源 API 会在每次调用时将令牌发送给标识提供者。 然后,标识提供者检查任何条件,并返回资源 API 可用来完成操作的数据。 此过程可能会很昂贵,因为它向每个 API 调用添加另一个往返 Web 请求。

若要通过连续访问评估 (CAE) 弥补这项开支,资源 API 可以侦听 Microsoft Entra ID 推送的有关 Microsoft Entra ID 为资源 API 发放的令牌的事件。 例如,当应用程序调用 Microsoft Graph API 时,Microsoft Graph 可以检查它是否已收到来自 Microsoft Entra ID 的有关令牌的事件。 如果原始身份验证的条件已更改并且用户需要重新进行身份验证,Microsoft Graph 会向调用应用返回错误。

当发生以下任何事件时,Microsoft Entra ID 会向启用 CAE 的 Microsoft 资源发送事件:

  • 已删除或禁用的用户帐户
  • 已更改或重置用户密码
  • 已启用用户多重身份验证
  • 管理员显式撤销用户的所有刷新令牌
  • Microsoft Entra ID 保护检测到用户风险升高

此外,启用 CAE 的 Microsoft 资源可以强制执行基于位置的条件访问策略。

通过 CAE 提高应用程序安全性和复原能力

基于 Microsoft Entra 连续访问评估构建的更安全、更可复原的应用程序视频演示了如何构建具有 CAE 支持的客户端应用程序。

观看上面的演示,了解应用程序通过以下步骤使用新式验证时如何工作:

  • 使用新式验证时应用程序的工作原理
  • 应用向 Microsoft 标识请求令牌
  • 应用接收访问令牌
  • 应用使用 JWT 调用 API/授权
  • 自检
  • 共享的信号和事件
  • 关键事件评估
  • 条件访问策略评估
  • 调用 API 连续访问评估
  • 声明质询

连续访问评估使应用程序有权访问在访问令牌生存期之外撤销的资源。 例如,应用程序具有有效期增加 75 分钟的令牌。 用户因凭证外泄而处于高风险状态。 CAE 将阻止应用访问资源,要求用户在继续之前重新进行身份验证。 因此,CAE 实现了改善应用安全性的主要目标。

由于可以在令牌生存期之外撤消对资源的访问权限,Microsoft Entra ID 可以发放更长生存期的令牌。 对于支持 CAE 的应用,Microsoft Entra ID 可以发放有效期长达 28 小时的令牌。 尽管此更长的令牌生存期不会提高应用的复原能力,但它降低了应用程序成本,因为应用需要请求令牌的频率要低得多。

CAE 改进了应用在从 Microsoft Entra ID 获取访问令牌时可能遇到的问题的复原能力。 如果可能,Microsoft Entra ID 将作为包含访问令牌的令牌响应的一部分,发出刷新时间。 Microsoft 身份验证库 (MSAL) 使用此刷新时间主动刷新令牌。 刷新时间是令牌过期时间的一部分(通常为一半)。 只要 MSAL 能够在令牌过期时间之前刷新访问令牌,应用程序就可以应对令牌刷新问题。

例如,当应用支持 CAE 时,Microsoft Entra ID 会发放一个令牌,授权应用调用有效期为 24 小时的 Microsoft Graph。 Microsoft Entra ID 然后告知 MSAL 在 12 小时后主动刷新令牌。 如果 MSAL 尝试刷新访问令牌失败,因为原始访问令牌在 12 小时内仍然有效,则应用程序在从 Microsoft Entra ID 获取令牌时能够更好地应对问题。

在应用中实现连续访问评估

如何在应用程序中使用启用连续访问评估的 API 中所述,应用及其访问的资源 API 必须已启用 CAE。 但是,准备代码以使用启用了 CAE 的资源不会阻止你使用未启用 CAE 的 API。 不使用 MSAL 的应用程序可以添加对声明质询、声明请求和客户端功能的支持以使用 CAE。

后续步骤