Azure身份认证
起因
我在使用Azure的一些服务的时候发现有些资源访问只需要使用ENDPOINT+KEY的模式就能登录;有的需要账号密码还要手机通过认证;
azure的权限管理怎么一回事?让我研究研究!
Azure权限说明
介绍几个常见的用户权限认证
用户身份认证
User Identity / Delegated Permissions
- 概念
使用 具体用户的身份访问资源或 API。
用户登录 Azure AD,应用代表用户操作资源。
Token 中会包含 scp
(scope)字段,表示用户同意的权限。
- 流程
用户打开应用 → 被重定向到 Azure AD 登录页。
用户登录 → 授权同意应用访问权限(Delegated permissions)。
Azure AD 返回 Authorization Code。
应用用 Authorization Code 换取 Access Token。
Access Token 调用 API。
- 特点
Token payload 中有 "scp"
字段(代表同意的委派权限)。
可访问用户有权限的资源。
适合 前端应用、Web 应用、桌面应用。
应用身份认证
Application Identity / App-only / Client Credentials
- 概念
应用自己调用 API,不依赖用户登录。
使用 Client ID + Client Secret 或 证书 获取 token。
Token 中包含 roles
字段(Application permissions)。
- 流程
- 在 Azure AD 注册应用,获取 Client ID / Client Secret 或证书。
- 在 API permissions 中添加 Application permissions。
- 管理员执行 Grant admin consent。
- 应用使用 client_credentials 流程 获取 Access Token。
- Access Token 调用 API。
- 特点
Token payload 中有 "roles"
字段。
可访问租户内授权范围的所有资源。
适合 后台服务、脚本、自动化任务。
- 优点
无需用户登录,可无人值守。
权限由管理员统一控制,安全可控。
- 缺点
权限授予必须管理员同意。
不能访问特定用户的私有资源(除非 Application permissions 覆盖)。
托管身份
Managed Identity
- 概念
Azure 资源(VM、App Service、Function)自带的系统身份。
无需手动管理 Client Secret 或证书。
Azure 会自动颁发 token。
- 流程
- 在 Azure 资源启用 System-assigned 或 User-assigned Managed Identity。
- Azure AD 自动为身份颁发 token。
- 应用直接请求 token → 调用资源/Graph API。
- 优点
无需保存机密。
安全性高,自动轮换 token。
- 缺点
只适用于运行在 Azure 上的资源。
….
使用场景
CI/CD中使用
参考文章
- Microsoft Graph API