我想使用C#中的Azure AD Graph或Microsoft Graph删除对企业应用程序的用户或组分配。
谢谢
凯文
答案 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 :(得分: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 api:role assignment id
3。。在运行c#代码之前,我们需要启用已为应用分配委派权限AppRoleAssignments["role assignment id"]
的功能,并启用如下屏幕截图所示的按钮。
4。之后,我们可以运行代码并成功删除用户或组。
5。。
(1)我提供的代码用于删除用户分配。如果要删除组分配,只需将代码修改为:
GET https://graph.microsoft.com/beta/servicePrincipals/{id}/appRoleAssignedTo/{id}
(2)您需要注意juunas提到的api的beta版本。
希望有帮助〜