【Azure API 管理】解决API Management添加AAD Group时遇见的 Failed to query Azure Active Directory graph due to error 错误

简介: 【Azure API 管理】解决API Management添加AAD Group时遇见的 Failed to query Azure Active Directory graph due to error 错误

问题描述

为APIM添加AAD Group时候,等待很长很长的时间,结果添加失败。错误消息为:

Write Groups ValidationError :Failed to query Azure Active Directory graph due to error: An error occurred while processing this request.

有什么办法可以成功为APIM添加AAD Group呢?

 

问题分析

查阅官方文档(https://docs.azure.cn/zh-cn/api-management/api-management-howto-aad),在为APIM配置Indenties(标识, 特指AAD中的注册应用)时,必须为注册应用赋予正确的API Permission.

1) Microsoft Graph的Directory.Read.All 权限

2) Azure Active Directory Graph的Directory.Read.All权限。

但是,在Azure AAD的页面中,现在无法找到Azure Active Directory Graph部分,无法通过Azure门户进行添加。

在深入分析 Global Azure 的文档后(https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-aad#add-an-external-azure-ad-group),得出可以通过PowerShell脚本来添加 Azure Active Directory Graph的Directory.Read.All权限。

PowerShell 脚本为:

$subId = "Your Azure subscription ID" #e.g. "1fb8fadf-03a3-4253-8993-65391f432d3a"
$tenantId = "Your Azure AD Tenant or Organization ID" #e.g. 0e054eb4-e5d0-43b8-ba1e-d7b5156f6da8"
$appObjectID = "Application Object ID that has been registered in AAD" #e.g. "2215b54a-df84-453f-b4db-ae079c0d2619"
#Login and Set the Subscription
az login
az account set --subscription $subId
#Assign the following permissions: Microsoft Graph Delegated Permission: User.Read, Microsoft Graph Application Permission: Directory.ReadAll,  Azure Active Directory Graph Application Permission: Directory.ReadAll (legacy)
# 中国区graph的地址为:https://microsoftgraph.chinacloudapi.cn,需要进行替换
az rest --method PATCH --uri "https://microsoftgraph.chinacloudapi.cn/v1.0/$($tenantId)/applications/$($appObjectID)" --body "{'requiredResourceAccess':[{'resourceAccess': [{'id': 'e1fe6dd8-ba31-4d61-89e7-88639da4683d','type': 'Scope'},{'id': '7ab1d382-f21e-4acd-a863-ba3e13f7da61','type': 'Role'}],'resourceAppId': '00000003-0000-0000-c000-000000000000'},{'resourceAccess': [{'id': '5778995a-e1bf-45b8-affa-663a9f3f4d04','type': 'Role'}], 'resourceAppId': '00000002-0000-0000-c000-000000000000'}]}"

 

在以上的脚本中,必须注意以下几点:

1)  appObjectID 的值获取的不是注册应用的Application Id,而是注册应用的Object ID

2)  发送PATCH请求的终结点需要修改为中国区Azure的终结点。参考开发说明文档:https://docs.azure.cn/zh-cn/articles/guidance/developerdifferences

从 graph.microsoft.com 修改为  microsoftgraph.chinacloudapi.cn

3)  PATCH请求Body中包含的信息完全不用修改,它代表着Azure Active Directory Graph应用的Directory.ReadAll权限。

代码执行成功后,进入到Azure AD页面,查看是否已经存在Directory ReadAll权限

执行PowerShell命令

查看Directory ReadAll权限(注意:需要退出当前登录用户后,重新登录一次Azure 门户才可以看见)

最后,根据文档步骤,执行 Grant admin consent for {tenantname}

回到API Management页面,再次添加AAD Group。成功!

在完成这一步操作后,完全参考文档就可以实现: Azure API 管理中使用 Azure Active Directory 授权开发人员帐户 https://docs.azure.cn/zh-cn/api-management/api-management-howto-aad

 

动画展示结果

 

 

参考资料

在 Azure API 管理中使用 Azure Active Directory 授权开发人员帐户 :https://docs.azure.cn/zh-cn/api-management/api-management-howto-aad

Add an external Azure AD group : https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-aad#add-an-external-azure-ad-group

中国区 Azure 开发人员指南 :https://docs.azure.cn/zh-cn/articles/guidance/developerdifferences

 

相关文章
|
24天前
|
安全 API 网络安全
【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)
【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)
|
24天前
|
API 开发工具 网络架构
【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
|
24天前
|
存储 Kubernetes API
【APIM】Azure API Management Self-Host Gateway是否可以把请求的日志发送到Application Insights呢?让它和使用Azure上托管的 Gateway一样呢?
【APIM】Azure API Management Self-Host Gateway是否可以把请求的日志发送到Application Insights呢?让它和使用Azure上托管的 Gateway一样呢?
|
24天前
|
API 网络架构 C++
【Azure Key Vault】使用REST API调用Azure Key Vault Secret的示例步骤
【Azure Key Vault】使用REST API调用Azure Key Vault Secret的示例步骤
|
1月前
|
机器人 API Python
智能对话机器人(通义版)会话接口API使用Quick Start
本文主要演示了如何使用python脚本快速调用智能对话机器人API接口,在参数获取的部分给出了具体的获取位置截图,这部分容易出错,第一次使用务必仔细参考接入参数获取的位置。
|
19天前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
28天前
|
SQL 存储 数据处理
|
1月前
|
XML JSON API
RESTful API设计最佳实践:构建高效、可扩展的接口
【8月更文挑战第17天】RESTful API设计是一个涉及多方面因素的复杂过程。通过遵循上述最佳实践,开发者可以构建出更加高效、可扩展、易于维护的API。然而,值得注意的是,最佳实践并非一成不变,随着技术的发展和业务需求的变化,可能需要不断调整和优化API设计。因此,保持对新技术和最佳实践的关注,是成为一名优秀API设计师的关键。
|
1月前
|
监控 API 数据安全/隐私保护
​邮件API触发式接口分析?邮件API接口好评榜
邮件API在企业通信和营销中至关重要,通过自动化邮件发送流程提升效率与客户满意度。本文解析邮件API触发式接口,即基于特定事件(如用户注册、购买产品)自动发送邮件的技术,能显著加快企业响应速度并增强用户体验。推荐市场上的优秀邮件API产品,包括SendGrid、Mailgun、Amazon SES、Postmark及新兴的AOKSend,它们各具特色,如高发送率、详细分析工具、灵活配置、强大的日志功能及用户友好的API接口,帮助企业根据不同需求选择最合适的邮件API解决方案。
|
1月前
|
存储 算法 Oracle
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
55 8