如何授予我的应用程序对我的租户的 AAD 图 API 的完全访问权限?
How can I grant my application full access to the AAD Graph API for my tenant?
我已经在我的 Tenant/Directory 中注册了一个 AAD 应用程序,我想在 App Only 上下文中调用图形 API。 (使用客户端凭证流程)
在进行某些 AAD Graph API 调用时,出现错误:
"odata.error":{
"code":"Authorization_RequestDenied",
"message":{
"lang":"en","value":"Insufficient privileges to complete the operation."
}
}
我想在我的租户上下文中授予此应用程序对图表 API 的完全访问权限。
或
我想将此应用程序权限授予我的租户,但 AAD Graph API 公开的权限目前不支持该权限。
您可以通过将应用程序的服务主体添加到 Company Administrator
目录角色来提升该应用程序在租户中的访问级别。这将为应用程序提供与公司管理员相同级别的权限,公司管理员可以执行任何操作。对于任何类型的目录角色,您都可以按照这些相同的说明进行操作,具体取决于您要授予此应用程序的访问级别。
请注意,这只会影响您的应用在租户中的访问权限。
此外,您必须已经是租户的公司管理员才能遵循这些说明。
为了进行更改,您需要安装 Azure Active Directory PowerShell Module。
安装模块后,使用您的管理员帐户向您的租户进行身份验证:
Connect-MSOLService
然后我们需要获取我们要提升的服务主体的对象 ID,以及您租户的公司管理员角色。
按 App ID GUID 搜索服务主体:
$sp = Get-MsolServicePrincipal -AppPrincipalId <App ID GUID>
按名称搜索目录角色
$role = Get-MsolRole -RoleName "Company Administrator"
现在我们可以使用Add-MsolRoleMember
命令将此角色添加到服务主体。
Add-MsolRoleMember -RoleObjectId $role.ObjectId -RoleMemberType ServicePrincipal -RoleMemberObjectId $sp.ObjectId
要检查一切是否正常,让我们找回公司管理员角色的所有成员:
Get-MsolRoleMember -RoleObjectId $role.ObjectId
您应该会在该列表中看到您的应用程序,其中 RoleMemberType
是 ServicePrincipal
,DisplayName
是您的应用程序的名称。
现在您的应用程序应该能够执行公司管理员可以执行的任何 Graph API 调用,所有这些都无需用户登录,使用客户端凭据流。
如果有帮助请告诉我!
我已经在我的 Tenant/Directory 中注册了一个 AAD 应用程序,我想在 App Only 上下文中调用图形 API。 (使用客户端凭证流程)
在进行某些 AAD Graph API 调用时,出现错误:
"odata.error":{
"code":"Authorization_RequestDenied",
"message":{
"lang":"en","value":"Insufficient privileges to complete the operation."
}
}
我想在我的租户上下文中授予此应用程序对图表 API 的完全访问权限。
或
我想将此应用程序权限授予我的租户,但 AAD Graph API 公开的权限目前不支持该权限。
您可以通过将应用程序的服务主体添加到 Company Administrator
目录角色来提升该应用程序在租户中的访问级别。这将为应用程序提供与公司管理员相同级别的权限,公司管理员可以执行任何操作。对于任何类型的目录角色,您都可以按照这些相同的说明进行操作,具体取决于您要授予此应用程序的访问级别。
请注意,这只会影响您的应用在租户中的访问权限。
此外,您必须已经是租户的公司管理员才能遵循这些说明。
为了进行更改,您需要安装 Azure Active Directory PowerShell Module。
安装模块后,使用您的管理员帐户向您的租户进行身份验证:
Connect-MSOLService
然后我们需要获取我们要提升的服务主体的对象 ID,以及您租户的公司管理员角色。
按 App ID GUID 搜索服务主体:
$sp = Get-MsolServicePrincipal -AppPrincipalId <App ID GUID>
按名称搜索目录角色
$role = Get-MsolRole -RoleName "Company Administrator"
现在我们可以使用Add-MsolRoleMember
命令将此角色添加到服务主体。
Add-MsolRoleMember -RoleObjectId $role.ObjectId -RoleMemberType ServicePrincipal -RoleMemberObjectId $sp.ObjectId
要检查一切是否正常,让我们找回公司管理员角色的所有成员:
Get-MsolRoleMember -RoleObjectId $role.ObjectId
您应该会在该列表中看到您的应用程序,其中 RoleMemberType
是 ServicePrincipal
,DisplayName
是您的应用程序的名称。
现在您的应用程序应该能够执行公司管理员可以执行的任何 Graph API 调用,所有这些都无需用户登录,使用客户端凭据流。
如果有帮助请告诉我!