【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法

简介: 【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法

问题描述

在先前的一篇博文中,介绍了如何使用Microsoft Graph API来创建Azure AD用户(博文参考:【Azure Developer】使用Microsoft Graph API 如何批量创建用户,用户属性中需要包含自定义字段(如:Store_code,Store_name等),但是在调用创建AAD用户之前,因为请求的Header中必须包含Authorization:Bearer {token}值。

在中国区获取Graph API的Authorization可以参考调用专用的API来获取身份验证的Token:

###post 请求:
https://login.partner.microsoftonline.cn/<tenantID>/oauth2/token 
###body 信息: 
grant_type: client_credentials #固定值 
resource: https://microsoftgraph.chinacloudapi.cn/ #固定值 
client_secret: AAD 密钥 
client_id: AAD 客户端ID #固定值

PS: 除固定值外,其他值都需要在Azure门户的AAD所注册的应用中获取(如不知如何获取,可参考博文:【Azure Developer】使用Postman获取Azure AD中注册应用程序的授权Token,及为Azure REST API设置Authorization

成功使用Postman获取到Access Token截图示例:

 

但是在成功的走出第一步后,接下来调用 API 创建User时,接连获取到如下的三个错误:

1){ "code": "InvalidAuthenticationToken", "message": "Signing key is invalid.",  }

2){ "code": "Authorization_RequestDenied", "message": "Insufficient privileges to complete the operation.",  }

3){ "code": "Request_BadRequest", "message": "The domain portion of the userPrincipalName property is invalid. You must use one of the verified domain names in your organization.",  }

 

问题一:Signing key is invalid

错误截图:

分析Signing Key is invalid错误,是因为所获取的Token在请求时验证无效,但是Token明明是通过 https://login.partner.microsoftonline.cn/<tenantID>/oauth2/token 获取的。在检查在Users的API URL时,发现使用的为官网(https://docs.microsoft.com/zh-cn/graph/api/user-post-users?view=graph-rest-1.0&tabs=http)中的graph.microsoft.com(Global Azure Graph endpoint),而它和Token的请求URL不是同一个Azure环境(中国区Azure)。所以这里需要修改users的API为: https:/ /microsoftgraph.chinacloudapi.cn/v1.0/users

PS: 在使用AAD User时,一定要非常留意所使用的Azure环境,根据环境决定所请求的Endpoint,这可以避免很多错误。

 

Source:https://docs.azure.cn/zh-cn/articles/guidance/developerdifferences?toc=%2fguides%2fdeveloper%2ftoc.json#check-endpoints-in-azure

 

问题二:Insufficient privileges to complete the operation

错误截图:

出现“Insufficient privileges to complete the operation”报错的原因是Clinet (即在AAD中所注册的Application) 没有执行此Users API的权限,需要到门户中按照文档要求授予相应的权限才可以。

 

(Source: https://docs.microsoft.com/zh-cn/graph/api/user-post-users?view=graph-rest-1.0&tabs=http#permissions)

授予Application的权限步骤有三:

1)进入AAD的Application 页面,选择“API 权限” ——> 点击“添加权限” ——> 选择 “Microsoft Graph”

2)选择应用程序权限,添加 "Microsoft Graph"的 User.ReadWrite.All、Directory.ReadWrite.All

3)完成第二步后,需要用管理员账号登录Azure,来”代表Microsoft授予管理员同意“操作

 

 

问题三:The domain portion of the userPrincipalName property is invalid

错误截图:

这个 "The domain portion of the userPrincipalName property is invalid".表明参数userPrincipalName的domain部分要和AAD中组织(tenant)名称中的名称一致。

contoso.onmicrosoft.com这个参数是官方文档的示例所用,并不是正确的一个组织域名。所以需要在AAD门户页面的概述中看到正确的域名:如:

 

 

参考资料

检查 Azure 中的终结点https://docs.azure.cn/zh-cn/articles/guidance/developerdifferences?toc=%2fguides%2fdeveloper%2ftoc.json#check-endpoints-in-azure

创建用户https://docs.microsoft.com/zh-cn/graph/api/user-post-users?view=graph-rest-1.0&tabs=http#permissions

相关文章
|
14天前
|
人工智能 API
通过API调用通义千问时出现DataInspectionFailed的解决办法(玄学版)
在使用qwen-plus API进行长文本翻译时,遇到了DataInspectionFailed错误,提示输入数据可能包含不当内容。尽管确认文本无敏感内容,但误判依然发生。通过将每个分段的字符数从1000降低到700,问题得以解决。建议在处理长文本时,减少每次请求的字符数以避免误判。
95 2
|
1月前
|
安全 数据挖掘 API
解锁数据宝藏:Microsoft Graph API的统一数据革命
解锁数据宝藏:Microsoft Graph API的统一数据革命
30 0
|
3月前
|
安全 API 网络安全
【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)
【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)
|
3月前
|
API 开发工具 网络架构
【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
|
3月前
|
存储 Kubernetes API
【APIM】Azure API Management Self-Host Gateway是否可以把请求的日志发送到Application Insights呢?让它和使用Azure上托管的 Gateway一样呢?
【APIM】Azure API Management Self-Host Gateway是否可以把请求的日志发送到Application Insights呢?让它和使用Azure上托管的 Gateway一样呢?
|
3月前
|
API 网络架构 C++
【Azure Key Vault】使用REST API调用Azure Key Vault Secret的示例步骤
【Azure Key Vault】使用REST API调用Azure Key Vault Secret的示例步骤
|
3月前
|
API 网络架构
【Azure Developer】使用 Microsoft Graph API查看用户状态和登录记录
【Azure Developer】使用 Microsoft Graph API查看用户状态和登录记录
|
存储 API 开发工具
详说Azure的服务运行时API
详说Azure的服务运行时API  【版权声明】原创,作者为chszs,转载需注明。 一、服务运行时API简介   微软的Windows Azure服务总线提供了一整套REST风格的API,其中包括服务运行时API(Service Runtime API)和服务管理API(Service Management API),分别用于运行时操作和管理操作。
831 0
|
存储 API 开发工具
详说Azure的服务运行时API
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/7851794 详说Azure的服务运行时API  【版权声明】原创,作者为chszs,转载需注明。
725 0
|
4天前
|
JSON API 数据格式
淘宝 / 天猫官方商品 / 订单订单 API 接口丨商品上传接口对接步骤
要对接淘宝/天猫官方商品或订单API,需先注册淘宝开放平台账号,创建应用获取App Key和App Secret。之后,详细阅读API文档,了解接口功能及权限要求,编写认证、构建请求、发送请求和处理响应的代码。最后,在沙箱环境中测试与调试,确保API调用的正确性和稳定性。