使用 Microsoft.Graph 获取当前应用程序权限
Using Microsoft.Graph to get current application permissions
我的 C# 程序使用 Microsoft.Graph Nuget。并且它需要能够确保它具有正确的 Microsoft Graph 应用程序权限。
我知道如何在 AD 中添加权限,但我希望我的程序能够测试它是否具有所需的权限。
我想要实现的示例:
var graphClient = new GraphServiceClient(authenticationProvider);
if(!graphClient.GetPermissions().Contains("AdministrativeUnit.Read.All"))
{
throw new Exception("Missing Permission AdministrativeUnit.Read.All")
}
提前致谢!
路途遥远
这里我提供Microsoft Graph beta版的总体思路(通过HTTP方式):
- 根据App ID获取servicePrincipal的Object ID:
GET
https://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq
'{App ID}'
.
- 获取appRole信息(应用权限信息)
基于步骤 1 中的对象 ID:
GET
https://graph.microsoft.com/beta/servicePrincipals/{Object ID}/appRoleAssignedTo
。
- 获取 appRoleID 和 Microsoft Graph 应用程序权限名称的匹配列表:
GET
https://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq
'00000003-0000-0000-c000-000000000000'
。请注意
"00000003-0000-0000-c000-000000000000"为固定值,
代表微软内部Graph App的App ID。
- 比较第2步和第3步的结果就知道哪个
应用程序权限在您的 Azure AD 应用程序中。
顺便说一句,Get appRoleAssignment目前只有内测版,内测版api不推荐使用
APIs under the /beta version in Microsoft Graph are subject to change.
Use of these APIs in production applications is not supported.
我的 C# 程序使用 Microsoft.Graph Nuget。并且它需要能够确保它具有正确的 Microsoft Graph 应用程序权限。
我知道如何在 AD 中添加权限,但我希望我的程序能够测试它是否具有所需的权限。
我想要实现的示例:
var graphClient = new GraphServiceClient(authenticationProvider);
if(!graphClient.GetPermissions().Contains("AdministrativeUnit.Read.All"))
{
throw new Exception("Missing Permission AdministrativeUnit.Read.All")
}
提前致谢!
路途遥远
这里我提供Microsoft Graph beta版的总体思路(通过HTTP方式):
- 根据App ID获取servicePrincipal的Object ID:
GET https://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq '{App ID}'
. - 获取appRole信息(应用权限信息)
基于步骤 1 中的对象 ID:
GET https://graph.microsoft.com/beta/servicePrincipals/{Object ID}/appRoleAssignedTo
。 - 获取 appRoleID 和 Microsoft Graph 应用程序权限名称的匹配列表:
GET https://graph.microsoft.com/beta/servicePrincipals?$filter=appId eq '00000003-0000-0000-c000-000000000000'
。请注意 "00000003-0000-0000-c000-000000000000"为固定值, 代表微软内部Graph App的App ID。 - 比较第2步和第3步的结果就知道哪个 应用程序权限在您的 Azure AD 应用程序中。
顺便说一句,Get appRoleAssignment目前只有内测版,内测版api不推荐使用
APIs under the /beta version in Microsoft Graph are subject to change. Use of these APIs in production applications is not supported.