身份验证场景和建议

如果你拥有在 Azure 应用服务中运行的 Web 应用或 API,则可以根据请求该应用的用户或应用程序的标识来限制对它的访问。 应用服务提供多种身份验证解决方案来帮助你实现此目标。 在本文中,你将了解不同的身份验证选项、其优缺点,以及用于特定方案的身份验证解决方案。

身份验证解决方案

  • Azure 应用服务内置身份验证 - 允许在 Web 应用、RESTful API 或移动后端中编写最少或零代码,从而登录用户并访问数据。 它直接内置于平台中,无需使用任何特定的语言、库、安全专业知识甚至任何代码。
  • Microsoft 身份验证库 (MSAL) - 使开发人员能够从 Microsoft 标识平台获取安全令牌,以便对用户进行身份验证并访问受保护的 Web API。 这些库可用于多个受支持的平台和框架,是可在各种托管环境中使用的常规用途库。 开发人员还可与多个登录提供程序(例如 Microsoft Entra)集成。
  • Microsoft.Identity.Web - 包装 MSAL.NET 的更高级别的库,它提供一组 ASP.NET Core 抽象,可简化向 Web 应用和 Web API(与 Microsoft 标识平台集成)添加身份验证支持的过程。 它提供了一个单面 API 便利层,该层将 ASP.NET Core、其身份验证中间件以及 MSAL.NET 绑定在一起。 此库可用于各种托管环境中的应用。 你可以与多个登录提供程序(例如 Microsoft Entra)集成。

场景建议

下表列出了每个身份验证解决方案及其使用时间的一些重要因素。

身份验证方法 何时使用
内置应用服务身份验证 * 你希望拥有和管理更少的代码。
* 应用的语言和 SDK 不提供用户登录或授权。
* 无法修改应用代码(例如,迁移旧应用时)。
* 需要通过配置而非代码来处理身份验证。
* 需要登录外部或社交用户。
Microsoft 身份验证库 (MSAL) * 需要多种不同语言之一的代码解决方案
* 需要添加自定义授权逻辑。
* 需要支持增量许可。
* 需要代码中有关已登录用户的信息。
* 需要登录外部或社交用户。
* 应用需要处理即将过期的访问令牌,无需让用户再次登录。
Microsoft.Identity.Web * 你有 ASP.NET Core 应用。
* 在本地开发期间,IDE 中需要单一登录支持。
* 需要添加自定义授权逻辑。
* 需要支持增量许可。
* 需要在 Web 应用中进行条件访问。
* 需要代码中有关已登录用户的信息。
* 需要登录外部或社交用户。
* 应用需要处理即将过期的访问令牌,无需让用户再次登录。

下表列出了身份验证场景和你会使用的身份验证解决方案。

方案 应用服务内置身份验证 Microsoft 身份验证库 Microsoft.Identity.Web
需要一种快速、简单的方法来限制组织中用户的访问?
无法修改应用程序代码(应用迁移场景)?
应用的语言和库支持用户登录/授权?
即使可以使用代码解决方案,也不愿使用库? 不想承担维护负担?
Web 应用是否需要提供增量许可?
需要在 Web 应用中进行条件访问?
应用需要处理即将过期的访问令牌,无需让用户再次登录(使用刷新令牌)?
需要自定义授权逻辑或有关已登录用户的信息?
需要从外部或社交标识提供者登录用户?
有 ASP.NET Core 应用?
有单页应用或静态 Web 应用?
想要 Visual Studio 集成?
在本地开发期间,IDE 中需要单一登录支持?

后续步骤

要开始使用内置应用服务身份验证,请阅读:

要开始使用Microsoft 身份验证库 (MSAL),请阅读:

要开始使用Microsoft.Identity.Web,请阅读:

详细了解应用服务内置身份验证和授权