【问题标题】:Try to adding AppRoleAssignment尝试添加 AppRoleAssignment
【发布时间】:2016-06-28 11:43:10
【问题描述】:

我正在尝试使用此代码添加 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}}

【问题讨论】:

  • 那么您想授予该用户对应用程序的访问权限吗?

标签: c# azure active-directory azure-active-directory


【解决方案1】:

你这样做的方式是正确的。似乎有两个错误使您的更改看起来没有被保存。

  1. 第一次运行(应用角色分配不存在)时,即使请求实际成功并且确实创建了应用角色分配,SDK 也会出错,因为响应中的应用角色分配有null id 值,这会导致它抛出以下异常:

为名为“id”的属性找到了一个空值,该属性具有预期的类型“Edm.Guid[Nullable=False]”。预期类型“Edm.Guid[Nullable=False]”不允许空值。

  1. 如果您随后重试(一旦创建了应用角色分配),您现在将收到您共享的错误,这非常具有误导性,因为问题不在于您的值不正确,而在于您重新尝试为已经拥有的 Resource + Principal 创建一个 appRoleAssigment。您可以通过查询(直接或通过https://graphexplorer.cloudapp.net)以下内容来确认是这种情况:

https://graph.windows.net/[yourtenant]/servicePrincipals/[ResourceID]/appRoleAssignedTo

https://graph.windows.net/[yourtenant]/users/[PrincipalID]/appRoleAssignments

我们正在研究纠正此问题,但在此期间,您的选择是吞下 #1 中的异常或不使用 SDK 并手动将您的发布请求发送到 appRoleAssignments。

【讨论】:

    猜你喜欢
    • 2021-05-09
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2021-10-12
    • 2014-11-07
    • 2014-08-29
    • 2014-10-26
    相关资源
    最近更新 更多