使用Microsoft Graph删除对企业应用程序的用户或组分配

时间:2020-04-02 05:04:08

标签: azure-active-directory microsoft-graph-api

我想使用C#中的Azure AD Graph或Microsoft Graph删除对企业应用程序的用户或组分配。

谢谢

凯文

2 个答案:

答案 0 :(得分:0)

为此,您需要在MS Graph API中调用此终结点:https://docs.microsoft.com/en-us/graph/api/approleassignment-delete?view=graph-rest-beta&tabs=http

尽管文档似乎缺少它,但是您应该能够通过执行GET而无需分配ID来列出用户等的分配。 我认为您无法猜测作业ID,因此您需要先从那里读取它们。

尽管它说您需要委派权限才能调用端点,但这并非完全正确。 您可以为应用授予用户访问权限,然后以用户身份登录并代表他们行事。 但是您也可以让一个应用程序在没有用户的情况下执行这些操作。 您可以将管理员角色分配给运行脚本的服务主体,这也将允许它执行此操作。 您可以通过AAD管理界面中的“角色和管理员”标签进行此操作。

这里唯一困难的情况是此功能仅在MS Graph API的beta版中。 但是不建议使用Azure AD Graph API。 因此,您现在有两个选择:

  1. 为此使用MS Graph API的测试版,并在API达到稳定版本后立即进行升级
    • beta的波动性很大,因此在生产中使用它会有一定的风险
  2. 使用Azure AD Graph API并在达到稳定版本后升级到MS Graph API
    • 此升级可能是强制性的

答案 1 :(得分:0)

juunas提供的答案是正确的,我只是补充一些内容。

由于您希望通过c#代码执行此操作,因此可以参考以下步骤:

1。。在您的项目中安装两个SDK。

HardOperation.get()

我参考了document关于安装SDK的信息,但是在"rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR w KQkq e3 0 2" 类中找不到Install-Package Microsoft.Graph.Auth -IncludePrerelease Install-Package Microsoft.Graph.Beta -Version 0.14.0-preview 。因此,请使用上面的命令安装SDK。

2。。请参考以下代码:

AppRoleAssignments

上方GraphServiceClient中的using Microsoft.Graph; using Microsoft.Graph.Auth; using Microsoft.Identity.Client; using System; using System.Security; namespace ConsoleApp13 { class Program { static async System.Threading.Tasks.Task Main(string[] args) { Console.WriteLine("Hello World!"); IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder .Create("your client id") .WithTenantId("your tenantid") .Build(); UsernamePasswordProvider authProvider = new UsernamePasswordProvider(publicClientApplication, new string[] { "https://graph.microsoft.com/.default" }); GraphServiceClient graphClient = new GraphServiceClient(authProvider); var securePassword = new SecureString(); string password = "your password"; foreach (char c in password) securePassword.AppendChar(c); await graphClient.Users["user object id"].AppRoleAssignments["role assignment id"].Request().WithUsernamePassword("email account", securePassword).DeleteAsync(); Console.WriteLine("----complete---"); } } } 来自列表查询graph apirole assignment id

3。。在运行c#代码之前,我们需要启用已为应用分配委派权限AppRoleAssignments["role assignment id"]的功能,并启用如下屏幕截图所示的按钮。 enter image description here

4。之后,我们可以运行代码并成功删除用户或组。

5。

(1)我提供的代码用于删除用户分配。如果要删除组分配,只需将代码修改为:

GET https://graph.microsoft.com/beta/servicePrincipals/{id}/appRoleAssignedTo/{id}

(2)您需要注意juunas提到的api的beta版本。

希望有帮助〜