entra-app-registrationрегистрация приложений Microsoft Entra
Регистрация приложений в Microsoft Entra ID (Azure AD): OAuth 2.0, MSAL-интеграция, portal/CLI/Bicep. Покрывает все типы: web, SPA, mobile, daemon.
Установка
npx -y skills add microsoft/github-copilot-for-azure --skill entra-app-registration --agent claude-codeРегистрация приложений в Microsoft Entra ID
Обзор
Microsoft Entra ID (ранее Azure Active Directory) — облачная служба управления удостоверениями и доступом Microsoft. Регистрация приложений позволяет приложениям аутентифицировать пользователей и безопасно получать доступ к ресурсам Azure.
Ключевые понятия
| Понятие | Описание |
|---|---|
| Регистрация приложения | Конфигурация, позволяющая приложению использовать платформу удостоверений Microsoft |
| Application (Client) ID | Уникальный идентификатор вашего приложения |
| Tenant ID | Уникальный идентификатор вашего Azure AD-арендатора/каталога |
| Client Secret | Пароль приложения (только для конфиденциальных клиентов) |
| Redirect URI | URL, на который отправляются ответы аутентификации |
| API Permissions | Области доступа, запрашиваемые вашим приложением |
| Service Principal | Удостоверение, создаваемое в вашем арендаторе при регистрации приложения |
Типы приложений
| Тип | Применение |
|---|---|
| Web Application | Серверные приложения, API |
| Single Page App (SPA) | JavaScript/React/Angular-приложения |
| Mobile/Native App | Десктопные и мобильные приложения |
| Daemon/Service | Фоновые сервисы, API |
Основной рабочий процесс
Шаг 1: Регистрация приложения
Создайте регистрацию в портале Azure или с помощью Azure CLI.
Через портал:
- Портал Azure → Microsoft Entra ID → Регистрации приложений
- Нажмите «Новая регистрация»
- Укажите имя, поддерживаемые типы учётных записей и URI перенаправления
- Нажмите «Зарегистрировать»
Рекомендуется использовать IaC для управления регистрациями, если вы уже применяете IaC в проекте, нужно масштабируемое решение или детальная история изменений конфигурации.
Шаг 2: Настройка аутентификации
- Web Apps: добавьте redirect URI, включите ID tokens при необходимости
- SPA: добавьте redirect URI, включите implicit grant flow при необходимости
- Mobile/Desktop: используйте
http://localhostили пользовательскую схему URI - Сервисы: redirect URI не нужен для client credentials flow
Шаг 3: Настройка разрешений API
Предоставьте приложению доступ к Microsoft API или собственным API.
Распространённые разрешения Microsoft Graph:
User.Read— чтение профиля пользователяUser.ReadWrite.All— чтение и запись всех пользователейDirectory.Read.All— чтение данных каталогаMail.Send— отправка почты от имени пользователя
Шаг 4: Создание учётных данных клиента (при необходимости)
Для конфиденциальных клиентских приложений создайте секрет клиента, сертификат или федеративные учётные данные удостоверения.
- Client Secret: перейдите в «Сертификаты и секреты», создайте секрет, скопируйте значение немедленно (отображается только один раз), храните безопасно (рекомендуется Key Vault)
- Сертификат: для production-среды используйте сертификаты вместо секретов — загрузите через раздел «Сертификаты и секреты»
- Federated Identity Credential: для динамической аутентификации конфиденциального клиента на платформе Entra
Шаг 5: Реализация OAuth-потока
Интегрируйте OAuth-поток в код приложения. MSAL — рекомендуемая библиотека.
Типичные паттерны
Паттерн 1: Первая регистрация приложения
Пошаговая помощь при первой регистрации приложения.
Необходимая информация: имя приложения, тип (web, SPA, mobile, service), redirect URI, необходимые разрешения.
Паттерн 2: Консольное приложение с аутентификацией пользователей
Создание консольного приложения .NET/Python/Node.js с аутентификацией пользователей.
Необходимая информация: язык программирования, библиотека аутентификации (рекомендуется MSAL), необходимые разрешения.
Паттерн 3: Аутентификация между сервисами
Настройка аутентификации daemon/service без участия пользователя.
Реализация: используйте Client Credentials flow.
MCP-инструменты и 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 | Создать сервисный принципал |
Microsoft Authentication Library (MSAL)
Поддерживаемые языки: .NET/C# — Microsoft.Identity.Client, JavaScript/TypeScript — @azure/msal-browser, @azure/msal-node, Python — msal.
Рекомендации по безопасности
| Практика | Рекомендация |
|---|---|
| Не хардкодьте секреты | Используйте переменные окружения, Azure Key Vault или управляемое удостоверение |
| Регулярно ротируйте секреты | Устанавливайте срок действия, автоматизируйте ротацию |
| Сертификаты вместо секретов | Более безопасно для production |
| Минимальные привилегии | Запрашивайте только необходимые разрешения API |
| Включите MFA | Требуйте многофакторную аутентификацию для пользователей |
| Используйте управляемые удостоверения | Для Azure-hosted приложений — избегайте секретов полностью |
| Валидируйте токены | Всегда проверяйте issuer, audience, expiration |
| Только HTTPS | Все redirect URI должны использовать HTTPS (кроме localhost) |
| Мониторинг входов | Используйте логи входов Entra ID для обнаружения аномалий |
