开发环境如何获取AzureAD访问令牌?云端应用代码仅Azure生效
我来给你分享几个在开发环境里获取Azure AD访问令牌的实用方案,刚好能替代Azure App Service自动注入的X-MS-TOKEN-ADD-ACCESS-TOKEN:
开发环境获取Azure AD访问令牌的几种方案
1. 用Azure CLI快速拿令牌(最省心的调试方式)
这是本地调试最快捷的方法,不需要改代码,手动复制令牌就行:
- 先确保你装了Azure CLI,然后登录到你的Azure租户:
az login - 运行下面的命令,替换
{api-client-id}为你要访问的API的客户端ID,{tenant-id}为你的Azure AD租户ID:az account get-access-token --resource {api-client-id} --tenant {tenant-id} - 命令输出里的
accessToken字段就是你要的Bearer令牌,调试时把它手动加到请求头的X-MS-TOKEN-ADD-ACCESS-TOKEN里,或者临时替换代码里的tokenHeader值就行。
2. 集成MSAL让代码自动获取令牌(适合长期开发)
如果你不想每次手动复制,可以在代码里加环境判断,开发环境自动用MSAL生成令牌:
- 先装MSAL的NuGet包(以.NET项目为例):
Install-Package Microsoft.Identity.Client - 修改你的
OnActionExecuting方法,加入开发环境的逻辑:public override void OnActionExecuting(ActionExecutingContext context) { base.OnActionExecuting(context); _client.DefaultRequestHeaders.Accept.Clear(); var isDevelopment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development"; if (isDevelopment) { // 开发环境用MSAL交互式登录获取令牌 var clientId = "你的本地应用客户端ID"; var tenantId = "你的Azure AD租户ID"; // 替换为你要访问的API的权限范围,一般是api://{api-client-id}/.default var scopes = new[] { "api://your-api-client-id/.default" }; var msalApp = PublicClientApplicationBuilder.Create(clientId) .WithAuthority($"https://login.microsoftonline.com/{tenantId}") .Build(); // 弹出登录窗口,登录后拿到令牌 var authResult = msalApp.AcquireTokenInteractive(scopes) .ExecuteAsync().GetAwaiter().GetResult(); _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken); } else { // 生产环境沿用Azure注入的令牌逻辑 var tokenHeader = Request.Headers["X-MS-TOKEN-ADD-ACCESS-TOKEN"]; _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokenHeader); } }提示:如果是无界面的开发环境(比如CI/CD或后台服务),可以换成
AcquireTokenForClient客户端凭据流,但需要给你的Azure AD应用配置客户端密钥或证书,并且授予API的应用权限。
3. 用Postman模拟请求(接口测试专用)
如果你用Postman调接口,可以直接在Postman里配置Azure AD认证:
- 在请求的Headers里,添加
Authorization字段,类型选Bearer Token。 - 点击
Get New Access Token,填写这些参数:- Token Name:随便起个名字就行
- Grant Type:选
Authorization Code - Callback URL:填
https://oauth.pstmn.io/v1/callback - Auth URL:
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize - Access Token URL:
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token - Client ID:你的应用客户端ID
- Scope:
api://{api-client-id}/.default
- 点
Request Token,登录后就能拿到令牌,Postman会自动帮你加到请求头里。
几个关键注意点
- 你的本地开发应用必须在Azure AD里注册过,并且已经给它配置了目标API的访问权限(记得要授予管理员同意,否则拿不到令牌)。
- 不同的认证流对应不同场景:交互式流适合本地开发调试(需要用户登录),客户端凭据流适合后台服务(不需要用户参与),授权码流适合模拟真实用户的请求。
内容的提问来源于stack exchange,提问作者Daarwin
相关产品推荐
相关产品推荐

