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

.NET MAUI应用调用REST API遇401未授权,求问题排查方案

.NET MAUI调用REST API出现401 Unauthorized的排查与解决

你在.NET MAUI应用中调用REST API时遇到401未授权错误,代码流程是先登录获取JwtSecurityToken,再用该令牌发起请求,但API返回拒绝。以下是问题原因分析和解决方法:

核心问题:错误使用IdToken而非Access Token

你当前代码中使用的authenticationResult.IdToken是身份令牌(IdToken),它的作用是验证用户身份(确认用户是谁),而非授权访问API。真正用于API调用的应该是访问令牌(AccessToken),API会验证Access Token的权限、受众等信息。

其他可能的原因及解决步骤

1. 替换令牌类型为Access Token

修改代码,使用登录结果中的AccessToken而非IdToken:

// 获取Access Token而非IdToken
string accessToken = authenticationResult.AccessToken;

HttpClient client = new ();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
HttpResponseMessage response = await client.GetAsync(url).ConfigureAwait(false);
response.EnsureSuccessStatusCode();

2. 确认登录时请求了正确的API权限范围

如果登录时没有请求目标API所需的权限(scopes),即使获取了Access Token,也会因权限不足被拒绝。确保登录流程中包含API要求的scopes:

// 示例:请求目标API的权限范围,替换为实际API的scope
var requiredScopes = new[] { "api://your-api-client-id/access_as_user" };
var authenticationResult = await _authenticationProvider.AcquireTokenInteractive(requiredScopes).ExecuteAsync();

3. 验证令牌的受众(Audience)是否匹配

API会检查令牌的aud(受众)声明,确认该令牌是颁发给当前API的。你可以解析令牌内容(本地使用JWT解析工具),查看aud字段是否与目标API的客户端ID或受众URI一致。如果不匹配,需调整登录请求的目标资源或API配置。

4. 检查令牌是否过期或无效

解析令牌查看exp(过期时间)字段,确认令牌未过期。另外,确保登录时使用的客户端ID、租户ID等配置与API的身份验证配置一致,避免因环境不匹配导致令牌无效。

内容的提问来源于stack exchange,提问作者David Shochet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:15:38