返回技能市场
开发运维 安全

entra-app-registration

@admin/entra-app-registration

Guides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.

admin 热度 385v0.0.1

概述

Microsoft Entra ID(原 Azure Active Directory)是 Microsoft 的基于云的身份和访问管理服务。应用注册允许应用对用户进行身份验证并安全访问 Azure 资源。

关键概念

| 概念 | 说明 | |---------|-------------| | 应用注册 | 允许应用使用 Microsoft identity platform 的配置 | | 应用(客户端)ID | 你的应用程序的唯一标识符 | | 租户 ID | 你的 Azure AD 租户/目录的唯一标识符 | | 客户端机密 | 应用的密码(仅限机密客户端) | | 重定向 URI | 发送身份验证响应的 URL | | API 权限 | 你的应用请求的访问范围 | | 服务主体 | 注册应用时在租户中创建的身份 |

应用类型

| 类型 | 用例 | |------|----------| | Web 应用 | 服务器端应用、API | | 单页应用(SPA) | JavaScript/React/Angular 应用 | | 移动/原生应用 | 桌面应用、移动应用 | | 守护程序/服务 | 后台服务、API |

核心工作流

步骤 1:注册应用

在 Azure 门户中使用 Azure CLI 创建应用注册。

门户方法:

  1. 导航到 Azure Portal → Microsoft Entra ID → App registrations
  2. 点击 "New registration"
  3. 提供名称、支持的账户类型和重定向 URI
  4. 点击 "Register"

CLI 方法: 见 [references/cli-commands.md](references/cli-commands.md) IaC 方法: 见 [references/BICEP-EXAMPLE.bicep](references/BICEP-EXAMPLE.bicep)

如果你已经在项目中使用 IaC、需要可扩展解决方案来管理大量应用注册,或需要配置变更的细粒度审计历史,强烈建议使用 IaC 管理 Entra 应用注册。

步骤 2:配置身份验证

根据应用类型设置身份验证配置。

  • Web 应用:添加重定向 URI,如需要则启用 ID 令牌
  • SPA:添加重定向 URI,如必要则启用隐式授权流
  • 移动/桌面:使用 http://localhost 或自定义 URI scheme
  • 服务:客户端凭据流不需要重定向 URI

步骤 3:配置 API 权限

授予你的应用访问 Microsoft API 或你自己的 API 的权限。

常见 Microsoft Graph 权限:

  • User.Read - 读取用户配置文件
  • User.ReadWrite.All - 读取和写入所有用户
  • Directory.Read.All - 读取目录数据
  • Mail.Send - 以用户身份发送邮件

详细信息: 见 [references/api-permissions.md](references/api-permissions.md)

步骤 4:创建客户端凭据(如需要)

对于机密客户端应用(web 应用、服务),创建客户端机密、证书或联合身份凭据。

客户端机密:

  • 导航到 "Certificates & secrets"
  • 创建新的客户端机密
  • 立即复制该值(仅显示一次)
  • 安全存储(建议使用 Key Vault)

证书: 在生产环境中,使用证书而不是机密以增强安全性。通过 "Certificates & secrets" 部分上传证书。

联合身份凭据: 用于将机密客户端动态认证到 Entra platform。

步骤 5:实现 OAuth 流

将 OAuth 流集成到你的应用代码中。

参见:

  • [references/oauth-flows.md](references/oauth-flows.md) - OAuth 2.0 流详情
  • [references/console-app-example.md](references/console-app-example.md) - 控制台应用实现

常见模式

模式 1:首次应用注册

逐步指导用户完成首次应用注册。

所需信息:

  • 应用名称
  • 应用类型(web、SPA、移动、服务)
  • 重定向 URI(如适用)
  • 所需权限

脚本: 见 [references/first-app-registration.md](references/first-app-registration.md)

模式 2:带用户身份验证的控制台应用

创建可认证用户的 .NET/Python/Node.js 控制台应用。

所需信息:

  • 编程语言(C#、Python、JavaScript 等)
  • 身份验证库(建议使用 MSAL)
  • 所需权限

示例: 见 [references/console-app-example.md](references/console-app-example.md)

模式 3:服务到服务身份验证

设置守护程序/服务身份验证,无需用户交互。

所需信息:

  • 服务/应用名称
  • 目标 API/资源
  • 使用机密还是证书

实现: 使用 Client Credentials 流(见 [references/oauth-flows.md#client-credentials-flow](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](references/cli-commands.md)

Microsoft Authentication Library(MSAL)

MSAL 是集成 Microsoft identity platform 的推荐库。

支持的语言:

  • .NET/C# - Microsoft.Identity.Client
  • JavaScript/TypeScript - @azure/msal-browser@azure/msal-node
  • Python - msal

示例: 见 [references/console-app-example.md](references/console-app-example.md)

安全最佳实践

| 实践 | 建议 | |----------|---------------| | 切勿硬编码机密 | 使用环境变量、Azure Key Vault 或托管标识 | | 定期轮换机密 | 设置过期时间,自动化轮换 | | 优先使用证书而非机密 | 生产环境更安全 | | 最小权限 | 仅请求所需 API 权限 | | 启用 MFA | 要求用户使用多因素身份验证 | | 使用托管标识 | 对于 Azure 托管应用,完全避免使用机密 | | 验证令牌 | 始终验证颁发者、受众和过期时间 | | 仅使用 HTTPS | 所有重定向 URI 必须使用 HTTPS(localhost 除外) | | 监控登录 | 使用 Entra ID 登录日志进行异常检测 |

SDK 快速参考

  • Azure Identity:[Python](references/sdk/azure-identity-py.md) | [.NET](references/sdk/azure-identity-dotnet.md) | [TypeScript](references/sdk/azure-identity-ts.md) | [Java](references/sdk/azure-identity-java.md) | [Rust](references/sdk/azure-identity-rust.md)
  • Key Vault(机密):[Python](references/sdk/azure-keyvault-py.md) | [TypeScript](references/sdk/azure-keyvault-secrets-ts.md)
  • Auth Events:[.NET](references/sdk/microsoft-azure-webjobs-extensions-authentication-events-dotnet.md)

参考

  • [OAuth 流](references/oauth-flows.md) - 详细 OAuth 2.0 流说明
  • [CLI 命令](references/cli-commands.md) - 应用注册的 Azure CLI 参考
  • [控制台应用示例](references/console-app-example.md) - 完整可用示例
  • [首次应用注册](references/first-app-registration.md) - 面向初学者的逐步指南
  • [API 权限](references/api-permissions.md) - 权限理解与配置
  • [故障排除](references/troubleshooting.md) - 常见问题与解决方案

外部资源

qianwen skills install @admin/entra-app-registration