You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Azure AD用户账号密码免跳转获取令牌认证App Service?

实现Azure AD用户名密码流获取令牌并调用Web API的配置调整

一、Azure AD应用注册配置修改

  • 启用资源所有者密码凭据(ROPC)流:在Web API对应的应用注册页面,进入「认证」→「高级设置」,勾选「允许公共客户端流」;同时在「认证」页面的「默认客户端类型」中,根据你的应用类型选择(如果使用客户端密钥的机密客户端,保持默认即可)。
  • 配置API权限:添加Web API对应的权限(比如自定义API权限或User.Read等微软Graph权限),必须点击「授予管理员同意」——ROPC流不支持用户动态授权,所有权限需提前完成管理员同意。
  • 留存关键信息:记下应用注册的客户端ID、租户ID,如果用机密客户端,还要保存生成的客户端密钥(或证书)。

二、App Service认证层配置调整

  • 在部署Web API的App Service「认证」页面,确认Azure AD提供商的「允许的令牌受众」包含Web API的应用ID URI或应用注册客户端ID。
  • 确保认证层接受用户令牌:ROPC流获取的是用户身份令牌,需保证App Service的Azure AD验证逻辑允许这类令牌通过,而非仅验证应用级令牌。

三、Web API项目代码(按需调整)

如果之前的Web API仅配置了应用令牌验证,需更新Program.cs中的认证逻辑,确保支持用户令牌:

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd"));

同时appsettings.json中的AzureAd配置需包含:

"AzureAd": {
  "Instance": "https://login.microsoftonline.com/",
  "TenantId": "你的租户ID",
  "ClientId": "Web API的应用注册客户端ID",
  "Audience": "Web API的应用ID URI"
}

四、API Management配置调整

  • 添加JWT验证策略:在APIM中为你的Web API配置「验证JWT」策略,设置颁发者为https://login.microsoftonline.com/{你的租户ID}/v2.0,受众为Web API的应用ID URI,确保只有有效用户令牌能访问API。
  • 可选测试配置:在APIM测试控制台中,可直接调用Azure AD令牌端点,用ROPC参数获取令牌后测试API调用。

五、ROPC流获取令牌的请求示例

向Azure AD令牌端点发送POST请求:

POST https://login.microsoftonline.com/{租户ID}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

client_id={你的应用注册客户端ID}
&scope={Web API应用ID URI}/.default openid profile offline_access
&username={Azure AD用户的UPN或邮箱}
&password={用户密码}
&grant_type=password
&client_secret={你的应用注册客户端密钥(机密客户端时必填)}

⚠️ 注意:ROPC流存在安全风险,仅在无法使用授权码流等更安全的认证方式时使用,且该流不支持启用了MFA的用户。

内容的提问来源于stack exchange,提问作者Shailja Atkotiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:22:55