
entra-app-registration
热门指导 Microsoft Entra ID 应用注册、OAuth 2.0 身份验证和 MSAL 集成。用途:创建应用注册、注册 Azure AD 应用、配置 OAuth、设置身份验证、添加 API 权限、生成服务主体、MSAL 示例、控制台应用身份验证、Entra ID 设置、Azure AD 身份验证。不适用于:Azure RBAC 或角色分配(使用 azure-rbac)、Key Vault 机密(使用 azure-keyvault-expiration-audit)、一般 Azure 资源安全指导。
指导 Microsoft Entra ID 应用注册、OAuth 2.0 身份验证和 MSAL 集成。用途:创建应用注册、注册 Azure AD 应用、配置 OAuth、设置身份验证、添加 API 权限、生成服务主体、MSAL 示例、控制台应用身份验证、Entra ID 设置、Azure AD 身份验证。不适用于:Azure RBAC 或角色分配(使用 azure-rbac)、Key Vault 机密(使用 azure-keyvault-expiration-audit)、一般 Azure 资源安全指导。
概述
Microsoft Entra ID(原 Azure Active Directory)是微软基于云的身份和访问管理服务。应用注册允许应用程序安全地验证用户身份并访问 Azure 资源。
关键概念
| 概念 | 描述 |
|---|---|
| 应用注册 | 允许应用程序使用 Microsoft 身份平台的配置 |
| 应用程序(客户端)ID | 应用程序的唯一标识符 |
| 租户 ID | Azure AD 租户/目录的唯一标识符 |
| 客户端密码 | 应用程序的密码(仅限机密客户端) |
| 重定向 URI | 身份验证响应发送到的 URL |
| API 权限 | 应用程序请求的访问范围 |
| 服务主体 | 注册应用时在租户中创建的身份 |
应用程序类型
| 类型 | 用例 |
|---|---|
| Web 应用程序 | 服务器端应用、API |
| 单页应用 (SPA) | JavaScript/React/Angular 应用 |
| 移动/本机应用 | 桌面、移动应用 |
| 守护程序/服务 | 后台服务、API |
核心工作流
步骤 1:注册应用程序
在 Azure 门户或使用 Azure CLI 创建应用注册。
门户方法:
- 导航到 Azure 门户 → Microsoft Entra ID → 应用注册
- 点击“新注册”
- 提供名称、支持的账户类型和重定向 URI
- 点击“注册”
CLI 方法: 参见 references/cli-commands.md
IaC 方法: 参见 references/BICEP-EXAMPLE.bicep
如果您的项目中已使用 IaC,需要可扩展的解决方案来管理大量应用注册,或需要配置更改的细粒度审计历史,强烈建议使用 IaC 管理 Entra 应用注册。
步骤 2:配置身份验证
根据应用程序类型设置身份验证设置。
- Web 应用:添加重定向 URI,根据需要启用 ID 令牌
- SPA:添加重定向 URI,必要时启用隐式授权流
- 移动/桌面:使用
http://localhost或自定义 URI 方案 - 服务:客户端凭据流不需要重定向 URI
步骤 3:配置 API 权限
授予应用程序访问 Microsoft API 或您自己的 API 的权限。
常见 Microsoft Graph 权限:
User.Read- 读取用户配置文件User.ReadWrite.All- 读取和写入所有用户Directory.Read.All- 读取目录数据Mail.Send- 以用户身份发送邮件
详细信息: 参见 references/api-permissions.md
步骤 4:创建客户端凭据(如果需要)
对于机密客户端应用程序(Web 应用、服务),创建客户端密码、证书或联合身份凭据。
客户端密码:
- 导航到“证书和密码”
- 创建新的客户端密码
- 立即复制值(仅显示一次)
- 安全存储(建议使用 Key Vault)
证书: 对于生产环境,使用证书代替密码以增强安全性。通过“证书和密码”部分上传证书。
联合身份凭据: 用于动态验证机密客户端到 Entra 平台的身份。
步骤 5:实现 OAuth 流
将 OAuth 流集成到应用程序代码中。
参见:
- references/oauth-flows.md - OAuth 2.0 流详细信息
- references/console-app-example.md - 控制台应用实现
常见模式
模式 1:首次应用注册
逐步引导用户完成首次应用注册。
所需信息:
- 应用程序名称
- 应用程序类型(Web、SPA、移动、服务)
- 重定向 URI(如果适用)
- 所需权限
脚本: 参见 references/first-app-registration.md
模式 2:带用户身份验证的控制台应用程序
创建 .NET/Python/Node.js 控制台应用以验证用户身份。
所需信息:
- 编程语言(C#、Python、JavaScript 等)
- 身份验证库(推荐 MSAL)
- 所需权限
示例: 参见 references/console-app-example.md
模式 3:服务到服务身份验证
设置无需用户交互的守护程序/服务身份验证。
所需信息:
- 服务/应用名称
- 目标 API/资源
- 使用密码还是证书
实现: 使用客户端凭据流(参见 references/oauth-flows.md#client-credentials-flow)
MCP 工具和 CLI
Azure CLI 命令
| 命令 | 用途 |
|---|---|
az ad app create |
创建新的应用注册 |
az ad app list |
列出应用注册 |
az ad app show |
显示应用详细信息 |
az ad app permission add |
添加 API 权限 |
az ad app credential reset |
生成新的客户端密码 |
az ad sp create |
创建服务主体 |
完整参考: 参见 references/cli-commands.md
Microsoft 身份验证库 (MSAL)
MSAL 是集成 Microsoft 身份平台的推荐库。
支持的语言:
- .NET/C# -
Microsoft.Identity.Client - JavaScript/TypeScript -
@azure/msal-browser、@azure/msal-node - Python -
msal
示例: 参见 references/console-app-example.md
安全最佳实践
| 实践 | 建议 |
|---|---|
| 切勿硬编码密码 | 使用环境变量、Azure Key Vault 或托管标识 |
| 定期轮换密码 | 设置过期时间,自动轮换 |
| 使用证书而非密码 | 生产环境更安全 |
| 最小权限原则 | 仅请求所需的 API 权限 |
| 启用 MFA | 要求用户进行多因素身份验证 |
| 使用托管标识 | 对于 Azure 托管的应用,完全避免使用密码 |
| 验证令牌 | 始终验证颁发者、受众和过期时间 |
| 仅使用 HTTPS | 所有重定向 URI 必须使用 HTTPS(localhost 除外) |
| 监控登录 | 使用 Entra ID 登录日志进行异常检测 |
SDK 快速参考
- Azure Identity:Python | .NET | TypeScript | Java | Rust
- Key Vault(密码):Python | TypeScript
- Auth Events:.NET
参考
- OAuth 流 - 详细的 OAuth 2.0 流说明
- CLI 命令 - 应用注册的 Azure CLI 参考
- 控制台应用示例 - 完整的工作示例
- 首次应用注册 - 初学者的分步指南
- API 权限 - 理解和配置权限
- 故障排除 - 常见问题及解决方案





