微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何更新 MS Graph 客户端服务主体 AppRoleAssignments

如何解决如何更新 MS Graph 客户端服务主体 AppRoleAssignments

我正在尝试通过图形客户端更新用户的 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);

我收到“指定的一个或多个属性值无效”,但当然没有关于哪个属性甚至哪个对象是问题的真实信息。

有人看到什么明显的东西吗?我在猜测客户端使用的语法 bc 我没有看到太多的文档或示例。

解决方法

我使用与您相同的代码进行测试并遇到相同的问题并进行了一些修改但仍然无法解决问题。对于你的更新用户的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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。