Azure开发者门户委托登录接口未授权:已有委托令牌如何调整授权
解决APIM开发者门户委托登录接口未授权问题
针对你调用users/{userId}/token接口返回未授权的问题,结合你已获取委托令牌的情况,可从以下几方面调整授权配置:
1. 切换为委托令牌(Bearer)授权
你当前使用的是Shared Access Signature(SAS)令牌,既然已有委托令牌,直接替换授权方式:
- 修改请求头的Authorization字段,将原有SAS替换为Bearer格式的委托令牌:
// 替换原有的client.DefaultRequestHeaders.Add("Authorization", ApimRestAuthHeader()); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + 你的委托令牌变量); - 确保委托令牌的受众(Audience)为
https://management.azure.com/,且包含Microsoft.ApiManagement/service/users/write的权限范围。
2. 验证SAS令牌的有效性(若继续使用SAS)
如果仍要使用SAS,需检查以下几点:
- 生成SAS的APIM管理用户(
ApimRestId对应的用户)必须拥有User Write权限,确保能操作用户令牌。 - 确认
ApimRestExpiry是当前时间之后的UTC时间,避免令牌过期;签名生成逻辑中dataToSign的格式必须是{uid}\n{expiry},且时间格式为O标准格式。
3. 核对用户标识符准确性
User.Identity.GetName()返回的值必须是APIM中已存在用户的邮箱地址或系统生成的用户ID,否则接口会因找不到用户返回未授权。若用户未在APIM中创建,需先调用POST /users接口创建用户。
4. 确认请求参数合规性
- 请求体的
keyType只能是primary或secondary,expiry必须为ISO 8601格式的UTC时间(如2024-12-31T23:59:59Z)。 - 确保API版本
2023-03-01-preview与APIM实例支持的版本匹配。
内容的提问来源于stack exchange,提问作者Koshal Garg
相关产品推荐
相关产品推荐

