Azure企业应用客户端凭证流:自定义WebAPI OAuth认证配置需求
客户端凭证流令牌适配自定义WebAPI的完整配置方案
1. 为自定义WebAPI创建应用注册
- 登录Azure门户,进入「应用注册」,新建注册(此注册对应你的WebAPI服务)。
- 记录该注册的应用程序(客户端)ID和目录(租户)ID,后续配置需用到。
2. 为WebAPI暴露专用权限/应用角色
2.1 添加API范围
- 在WebAPI的应用注册页面,切换到「公开API」选项卡:
- 点击「添加范围」,确认应用程序ID URI(默认值为
api://{客户端ID},可直接保留),点击「保存并继续」。 - 填写范围信息:名称设为
access_as_application,同意类型选择「管理员同意」,补充描述后完成添加。
- 点击「添加范围」,确认应用程序ID URI(默认值为
2.2 创建应用角色(可选,用于基于角色的权限控制)
- 回到应用注册的「应用角色」选项卡,点击「创建应用角色」:
- 填写角色名称(如
API.FullAccess),允许的成员类型选择「应用程序」,补充描述后点击「应用」。
- 填写角色名称(如
3. 配置客户端应用(企业应用)的API权限
- 打开用于获取令牌的客户端应用注册页面,进入「API权限」选项卡:
- 点击「添加权限」,在弹出窗口中切换到「我的API」标签,即可看到你创建的WebAPI注册(若未显示,刷新页面或确认租户一致性)。
- 选中该WebAPI,勾选对应的应用权限(注意必须选应用权限,而非委托权限,匹配客户端凭证流的无用户场景),点击「添加权限」。
- 点击「授予管理员同意」,确保权限生效。
4. 修改令牌获取代码
将原代码中的.default范围替换为WebAPI的专用范围,格式为{WebAPI的应用程序ID URI}/.default,示例如下:
appConfidential = ConfidentialClientApplicationBuilder .Create(ClientID) .WithClientSecret("MySecret") .WithAuthority(authority) .WithLegacyCacheCompatibility(false) .Build(); string[] confidentialScope = new string[] { "api://your-webapi-client-id/.default" }; return appConfidential.AcquireTokenForClient(confidentialScope).ExecuteAsync().Result;
此处的.default会自动包含已授权的所有应用权限,无需单独指定单个角色或范围。
5. WebAPI端的令牌验证配置
确保WebAPI在验证令牌时,将**受众(Audience)设置为WebAPI的应用程序ID或应用程序ID URI,同时验证令牌的颁发者(Issuer)**与你的租户ID匹配。
内容的提问来源于stack exchange,提问作者Manuel
相关产品推荐
相关产品推荐

