身份验证场景和建议

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

身份验证解决方案

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

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