如何更新 MS Graph 客户端服务主体 AppRoleAssignments
How To Update MS Graph Client Service Principal AppRoleAssignments
我正在尝试通过 Graph Client 更新用户的 AppRole 分配。根据 MS 文档,我试图从服务主体端而不是用户端进行操作。
var sp = await _graphServiceClient.ServicePrincipals[objectId].Request().GetAsync();
ServicePrincipal newSp = new ServicePrincipal
{
Id = objectId,
AppId = _configuration["AzureAd:AppId"]
};
newSp.AppRoleAssignedTo = new ServicePrincipalAppRoleAssignedToCollectionPage();
newSp.AppRoleAssignedTo.Add(new AppRoleAssignment
{
PrincipalId = new Guid(u.Id),
ResourceId = new Guid(objectId),
AppRoleId = new Guid(r)
});
await _graphServiceClient.ServicePrincipals[objectId].Request().UpdateAsync(newSp);
我收到了 'One or more property values specified are invalid',但当然没有关于什么 属性 甚至哪个对象有问题的真实信息。
有人看到明显的东西吗?我在猜测客户端使用的语法,因为我没有看到太多文档或示例。
我用与你相同的代码进行测试,遇到了同样的问题,做了一些修改,但仍然无法解决问题。对于更新用户的AppRole分配的要求,我不确定我们是否可以通过您提供的代码来完成,但我可以提供另一种更直接的解决方案。
您提供的代码是新建一个服务主体并将角色分配添加到其中,然后更新服务主体。这里提供另一种解决方案,它可以直接添加应用角色分配:
var appRoleAssignment = new AppRoleAssignment
{
PrincipalId = Guid.Parse("{principalId}"),
ResourceId = Guid.Parse("{resourceId}"),
AppRoleId = Guid.Parse("{appRoleId}")
};
await graphClient.Users["{userId}"].AppRoleAssignments
.Request()
.AddAsync(appRoleAssignment);
上面的代码在后端请求 this 图 api。
我正在尝试通过 Graph Client 更新用户的 AppRole 分配。根据 MS 文档,我试图从服务主体端而不是用户端进行操作。
var sp = await _graphServiceClient.ServicePrincipals[objectId].Request().GetAsync();
ServicePrincipal newSp = new ServicePrincipal
{
Id = objectId,
AppId = _configuration["AzureAd:AppId"]
};
newSp.AppRoleAssignedTo = new ServicePrincipalAppRoleAssignedToCollectionPage();
newSp.AppRoleAssignedTo.Add(new AppRoleAssignment
{
PrincipalId = new Guid(u.Id),
ResourceId = new Guid(objectId),
AppRoleId = new Guid(r)
});
await _graphServiceClient.ServicePrincipals[objectId].Request().UpdateAsync(newSp);
我收到了 'One or more property values specified are invalid',但当然没有关于什么 属性 甚至哪个对象有问题的真实信息。
有人看到明显的东西吗?我在猜测客户端使用的语法,因为我没有看到太多文档或示例。
我用与你相同的代码进行测试,遇到了同样的问题,做了一些修改,但仍然无法解决问题。对于更新用户的AppRole分配的要求,我不确定我们是否可以通过您提供的代码来完成,但我可以提供另一种更直接的解决方案。
您提供的代码是新建一个服务主体并将角色分配添加到其中,然后更新服务主体。这里提供另一种解决方案,它可以直接添加应用角色分配:
var appRoleAssignment = new AppRoleAssignment
{
PrincipalId = Guid.Parse("{principalId}"),
ResourceId = Guid.Parse("{resourceId}"),
AppRoleId = Guid.Parse("{appRoleId}")
};
await graphClient.Users["{userId}"].AppRoleAssignments
.Request()
.AddAsync(appRoleAssignment);
上面的代码在后端请求 this 图 api。