如果 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,请阅读相关文档:
详细了解应用服务内置身份验证和授权