提高你开发的守护程序应用程序中身份验证和授权的复原能力

了解如何使用 Microsoft 标识平台和 Microsoft Entra ID 来提高守护程序应用程序的复原能力。 查找有关后台进程、服务、服务器到服务器应用以及不带用户的应用程序的信息。

请参阅:什么是 Microsoft 标识平台?

下图演示了调用 Microsoft 标识平台的守护程序应用。

A daemon application making a call to Microsoft identity platform.

Azure 资源的托管标识

如果你要在 Azure 上生成守护程序应用,请使用 Azure 资源的托管标识来处理机密和凭据。 该功能可通过处理证书过期、轮换或信任提高复原能力。

请参阅什么是 Azure 资源的托管标识?

托管标识使用长期访问令牌和来自 Microsoft 标识平台的信息在令牌过期之前获取新的令牌。 应用会在获取新令牌时运行。

托管标识使用区域终结点,可通过合并服务依赖项来帮助防止区域外故障。 区域终结点有助于将流量保持在地理区域中。 例如,如果你的 Azure 资源位于 ChinaNorth2,则所有流量都保留在 ChinaNorth2。

Microsoft 身份验证库

如果开发守护程序应用且不使用托管标识,请使用 Microsoft 身份验证库 (MSAL) 进行身份验证和授权。 MSAL 简化了提供客户端凭据的过程。 例如,应用程序不需要使用基于证书的凭据创建 JSON Web 令牌断言和对其进行签名。

请参阅Microsoft 身份验证库 (MSAL) 的概述

面向 .NET 开发人员的 Microsoft.Identity.Web

如果在 ASP.NET Core 上开发守护程序应用,请使用 Microsoft.Identity.Web 库简化授权。 它包括分布式令牌缓存策略,可用于在多个区域中运行的分布式应用。

了解详细信息:

缓存和存储令牌

如果不使用 MSAL 进行身份验证和授权,可参阅缓存和存储令牌的最佳做法。 MSAL 会实现并遵循这些最佳做法。

应用程序会从标识提供程序 (IdP) 获取令牌,以授权应用程序调用受保护的 API。 当应用接收令牌时,包含令牌的响应还包含一个 expires\_in 属性,可告知应用程序缓存和重用令牌的时长。 确保应用程序使用 expires\_in 属性来确定令牌的生存期。 确认应用程序不会尝试解码 API 访问令牌。 使用缓存的令牌可防止应用与 Microsoft 标识平台之间发生不必要的流量。 用户在令牌的生存期内登录到应用程序。

HTTP 429 和 5xx 错误代码

使用以下部分了解 HTTP 429 和 5xx 错误代码

HTTP 429

存在影响复原能力的 HTTP 错误。 如果应用程序收到 HTTP 429 错误代码“请求太多”,Microsoft 标识平台会限制请求,从而阻止应用接收令牌。 确保应用在“Retry-After”响应字段中的时间过期之前不会尝试获取令牌。 429 错误通常表示应用程序未正确缓存和重用令牌。

HTTP 5xx

如果应用程序收到 HTTP 5x 响应代码,则应用不得进入快速重试循环。 确保应用程序等待至“Retry-After”字段过期。 如果响应未提供“Retry-After”标头,请在响应后至少 5 秒将指数回退重试用于首次重试。

请求超时后,确认应用程序未立即重试。 使用前面引用的指数回退重试。

后续步骤