尝试添加AppRoleAssignment
本文关键字:AppRoleAssignment 添加 | 更新日期: 2023-09-27 17:52:15
我正在尝试使用此代码添加一个AppRoleAssignment:
AppRoleAssignment objAppRoleAssignment = new AppRoleAssignment();
objAppRoleAssignment.Id = Guid.Parse("00000000-0000-0000-0000-000000000000");
objAppRoleAssignment.ResourceId = Guid.Parse("ServicePrincipalID");
objAppRoleAssignment.PrincipalType = "User";
objAppRoleAssignment.PrincipalId = Guid.Parse(user.ObjectId);
user.AppRoleAssignments.Add(objAppRoleAssignment);
await user.UpdateAsync();
我没有任何角色,所以我指定默认的00000000-0000-0000-0000-000000000000
角色
但是我得到这个错误:
{"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"One or more properties are invalid."},"values":null}}
你这样做是对的。这里似乎有两个错误,使您的更改看起来没有被保存。
- 第一次运行这个(应用角色分配不存在),即使请求实际上成功并且确实创建了应用角色分配,SDK也会出错,因为响应中的应用角色分配有一个空id值,这会导致它抛出以下异常:
为名为'id'的属性找到一个空值,该属性具有预期的类型'Edm.Guid[Nullable=False]'。期望的类型是"Edm"。Guid[Nullable=False]'不允许空值
- 如果你然后重试(一旦创建了应用程序角色分配),你现在会得到你共享的错误,这是相当误导的,因为问题不是你有坏的值,而是你试图为已经有一个的资源+主体创建一个approleassignment。您可以通过查询(直接或通过https://graphexplorer.cloudapp.net)确认这种情况:
https://graph.windows.net/[yourtenant]/servicePrincipals/[ResourceID]/appRoleAssignedTo
或
https://graph.windows.net/[yourtenant]/用户/[PrincipalID]/appRoleAssignments
我们正在研究纠正这个问题,但在此期间,您的选择是要么吞下#1中的异常,要么不使用SDK并手动制作您的post请求到appRoleAssignments