Entra 身份验证事件 .NET 技能
用 Azure Functions 定制 Entra ID 身份验证流程。
文档涵盖输入校验、托管身份、错误处理和相关权限提示,且未发现恶意行为或明显越权;但外部 API 示例使用未认证的硬编码 URL,OTP 示例处理明文验证码并记录电话号码,缺少数据流、敏感数据保护、用户确认、超时、回滚和依赖安全说明,因此扣分。
文档提供多个事件路径和异常处理示例,但没有针对该技能的提交测试或可复现构建证据;代码片段缺少部分 using、依赖版本兼容性和部署前提说明,外部数据失败、空响应、超时及序列化异常处理不足,因此仅达到静态审查下的有限可靠性。
目标用户、SDK、事件类型和触发关键词较明确,覆盖令牌、属性收集和 OTP 场景;但未充分声明不适用范围、运行模型差异、输入输出契约、地区网络可达性或中文使用注意事项,触发边界和环境适配证据有限,因此扣分。
SKILL.md 结构清晰,包含安装、工作流、类型参考、配置、最佳实践、错误处理、相关 SDK、许可证和版本元数据;但 metadata 版本为 1.0.0、正文称当前包为 1.1.0,缺少变更记录、维护责任、兼容矩阵、FAQ、完整依赖和已知限制说明,因此扣分。
示例覆盖主要认证事件,并能为常见代码生成任务提供可直接参考的骨架;但 OTP 发送函数是空实现,外部数据 API 是占位地址,缺少真实测试、完整项目文件、部署验证和关键配置边界,生成结果仍需较多人工核验,因此静态上限内扣分。
文档列出 NuGet、Microsoft Learn 和 GitHub 参考链接,仓库还提供通用 CI、评估工作流和测试工具;但没有该技能专属 acceptance criteria、测试套件或第三方执行结果,关键 API 和配置声明无法仅凭所给文件独立复现,因此不能超过静态证据上限。
- 不要直接复制外部 API 示例;应加入认证、授权、TLS、超时、重试、响应校验和密钥管理。
- 避免记录电话号码、OTP 或其他敏感认证数据,并明确 OTP 生命周期、重放防护、速率限制和失败恢复策略。
- 发布前核对 Microsoft.Azure.WebJobs.Extensions.AuthenticationEvents 1.1.0 与所选 Azure Functions .NET 运行模型、类型命名和 Entra 配置要求。
- 将占位的 SendSmsAsync、example.com API、Graph 权限和 API URI 替换为经过验证的实现与最小权限配置。
它能做什么 & 适用场景
该技能面向使用 .NET 和 Azure Functions 处理 Microsoft Entra ID 自定义身份验证事件的开发者。它涵盖令牌签发、属性收集和自定义 OTP 发送等事件。技能提供可直接参考的 C# 函数示例、响应操作、错误处理和 Function App 配置。适合需要令牌增强或自定义注册与验证流程的项目,但仍需要自行部署 Function App 并配置 Entra ID。
指导开发者安装 Microsoft.Azure.WebJobs.Extensions.AuthenticationEvents NuGet 包,创建由 WebJobsAuthenticationEventsTriggerAttribute 触发的 Azure Functions,并处理 OnTokenIssuanceStart、OnAttributeCollectionStart、OnAttributeCollectionSubmit 和 OnOtpSend 事件。示例读取用户标识、关联 ID、提交属性及 OTP 数据,生成自定义 claims、预填属性、阻止页面、校验错误、修改属性或 OTP 成功/失败响应;也展示从外部 API 获取用户资料、配置 Program.cs、host.json 和 local.settings.json,以及在 Entra ID 中注册 API、创建自定义身份验证扩展并关联用户流。
- 负责 Entra ID 登录流程的 .NET 开发者,需要在令牌签发时加入部门、角色或员工编号等自定义 claims。
- 构建 B2C 或外部身份注册流程的团队,需要预填、校验或修改用户属性。
- 需要阻止特定邮箱域注册的开发者,希望在属性提交事件中返回阻止页面。
- 需要通过短信、电子邮件或推送渠道发送一次性密码的团队。
- 维护 Azure Functions 身份验证扩展的工程师,需要参考错误处理、日志记录和 Application Insights 监控做法。
优缺点一览
- 覆盖四类核心身份验证事件,并提供完整 C# 示例。
- 包含令牌增强、属性校验、属性修改和自定义 OTP 等具体操作。
- 说明 Entra ID 配置、错误处理、关联 ID 日志和性能实践。
- MIT 许可,技能由 Microsoft 标注维护。
- 依赖 .NET、Azure Functions 和 Entra ID 配置,不能单独完成部署。
- 外部数据访问和 OTP 发送示例中的 API 或短信提供商需要自行实现。
- 来源没有提供该技能专属的测试场景或平台兼容性测试结果。
- 当前版本信息为 v1.1.0,来源未说明支持的 .NET 目标框架或超时限制数值。
如何安装
安装整个技能集合:运行 npx skills add microsoft/skills,然后在向导中选择此技能;技能会安装到所选 Agent 的目录,例如 GitHub Copilot 的 .github/skills/。也可克隆仓库后复制 .github/plugins/azure-sdk-dotnet/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/。在 .NET 项目中安装 SDK:dotnet add package Microsoft.Azure.WebJobs.Extensions.AuthenticationEvents。
如何使用
将技能文件放入 Agent 的技能目录,并在请求中明确说明目标,例如:为 Azure Functions 创建 OnTokenIssuanceStart 处理器,为 Entra ID 令牌添加 department 和 employeeId claims。根据需要请求属性收集或 OTP 事件实现。部署 Function App 后,按技能说明在 Entra ID 中注册 API、创建 Custom Authentication Extension 并链接到 User Flow。具体部署命令未在来源中提供。
对比同类
Microsoft.Identity.Web 用于 Web 应用身份验证,Azure.Identity 用于 Azure 身份验证;本技能专注于 Azure Functions 承载的 Entra ID 自定义身份验证事件。