# microsoft-azure-webjobs-extensions-authentication-events-dotnet

Скилл для работы с кастомными событиями аутентификации Microsoft Entra ID в .NET: добавление claims в токены, сбор атрибутов, OTP.

- скилл · `type=skill` · Claude Code, GitHub Copilot · 1 установка · ★ 3148
- Автор: Microsoft
- Лицензия: MIT · policy=mirror · лицензия открытая, файл — в исходнике
- Исходник: https://github.com/microsoft/skills/tree/HEAD/.github/plugins/azure-sdk-dotnet/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/SKILL.md
- Обновлён: 2026-10-23
- HTML: https://affpapa.org/nevibecode/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet

## Что делает

Скилл описывает расширение Azure Functions для обработки событий аутентификации Entra ID. Внутри — четыре поддерживаемых события: `OnTokenIssuanceStart` добавляет кастомные claims в токен при выдаче, `OnAttributeCollectionStart` настраивает страницу сбора атрибутов до показа, `OnAttributeCollectionSubmit` проверяет и меняет атрибуты после отправки, `OnOtpSend` отвечает за доставку одноразового кода по SMS или почте.

Каждое событие — это функция Azure Functions с триггером `WebJobsAuthenticationEventsTrigger`, которая возвращает объект ответа. Для добавления claims создаётся `WebJobsTokenIssuanceStartResponse` и в `Actions` кладётся `WebJobsProvideClaimsForToken` со словарём пар ключ-значение. Claims можно брать из внешнего API: в примере скилла показан `HttpClient`, который тянет профиль пользователя по ID и раскладывает поля в claims.

Пакет ставится командой `dotnet add package Microsoft.Azure.WebJobs.Extensions.AuthenticationEvents`. Нужен .NET-проект с Azure Functions и настроенное расширение Entra ID на стороне тенанта — без этого триггер не сработает. Если пользователь в запросе не пришёл, код из примера возвращает пустой ответ и пишет предупреждение в лог, так что проверку `userId` на пустоту лучше не пропускать.

## Требования
- Работает с: Azure

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add microsoft/skills --skill microsoft-azure-webjobs-extensions-authentication-events-dotnet -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/

### Codex

**Вручную: положить файлы**
- Файл: `.agents/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

**Вручную: положить файлы**
- Файл: `.cursor/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install microsoft/skills microsoft-azure-webjobs-extensions-authentication-events-dotnet
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/SKILL.md`

### Gemini CLI

**Командой платформы**
```bash
gemini skills install https://github.com/microsoft/skills --path .github/plugins/azure-sdk-dotnet/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/microsoft/skills/tree/HEAD/.github/plugins/azure-sdk-dotnet/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/SKILL.md

## Когда брать
- добавить кастомные claims в токен при входе пользователя
- подтянуть данные о сотруднике из внешнего API и положить их в токен
- настроить страницу сбора атрибутов до её показа
- проверить и поправить атрибуты после отправки формы регистрации
- заменить стандартную доставку OTP на свою

## Примеры запросов агенту
- покажи пример функции OnTokenIssuanceStart с добавлением claims department и costCenter
- как через WebJobsAuthenticationEventsTrigger получить профиль пользователя из внешнего API и добавить его поля в токен
- настрой OnAttributeCollectionSubmit так, чтобы блокировать регистрацию с определённым доменом почты

## Похожие
- [azure-functions-csharp](https://affpapa.org/nevibecode/rules/azure-functions-csharp.md) — правило · ★ 40418
- [azure-infra-engineer](https://affpapa.org/nevibecode/agents/azure-infra-engineer.md) — субагент · 245 установок
- [azure-functions](https://affpapa.org/nevibecode/skills/microsoftdocs-azure-functions.md) — скилл · 378 установок
- [azure-static-web-apps](https://affpapa.org/nevibecode/skills/azure-static-web-apps.md) — скилл · 8900 установок
- [authentication](https://affpapa.org/nevibecode/skills/codewithmukesh-authentication.md) — скилл · 2800 установок
- [dt-obs-azure](https://affpapa.org/nevibecode/skills/dt-obs-azure.md) — скилл · 2000 установок

Из того же набора: [microsoft/skills](https://affpapa.org/nevibecode/by/microsoft/skills.md) — 64 карточки

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
