身份验证场景和建议
如果你拥有在 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,请阅读:
详细了解应用服务内置身份验证和授权