Azure AD Graph API ApproleAssignment 不允许零 GUID

问题描述 投票:0回答:3

尝试为用户添加

AppRoleAssignment
时出现错误:

{"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"一个或多个属性无效。"},"date":" 2017-10-21T14:49:42","requestId":"3aacf13e-5620-40da-8fd0-fb2d4130f171","值":null}}

当我使用实际的

ApproleId
时,一切正常。然而,当我设置

AppRoleAssignment.Id = new Guid();
我收到上述错误;

这没有意义,因为文档说这是允许的 通过设置零 GUID,SO 的其他帖子中也强调了这一点。

我在这里缺少什么?

完整代码:

    AppRoleAssignment appRoleAssignment = new AppRoleAssignment()
    {

        Id = new Guid(),
        ResourceId = Guid.Parse(servicePrincipal.ObjectId),
        PrincipalId = Guid.Parse(user.ObjectId),
        PrincipalType = "User"
    };
    user.AppRoleAssignments.Add(appRoleAssignment);

    await user.UpdateAsync();
azure-ad-graph-api
3个回答
0
投票

根据我的经验,有两种情况我们可能会遇到此问题。

首先,如果服务主体中有自定义角色,您希望分配默认角色。

其次,如果我们之前已经为该人分配了默认角色。

请检查您是否处于这两种情况之一,如果您仍然遇到此问题,请告诉我。


0
投票

我在使用 PowerShell 时面临同样的问题:

$EmptyGuid = [GUID]::Empty

New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ManagedIdentityID -PrincipalId $ManagedIdentityID -AppRoleId $EmptyGuid -ResourceId $GraphResourceID.Id

错误是:New-MgServicePrincipalAppRoleAssignment:无法将文字“”转换为预期类型“Edm.Guid”。

看来,这在幕后并没有发挥作用


0
投票

我遇到了同样的问题,并且我也尝试对 -AppRoleId 参数使用空 GUID,如 Microsoft 所示,但无济于事。

我发现 -AppRoleId 参数确实需要有一个有效的 GUID,而不是空的。

最初,我使用以下方法提取我的服务主体:

$app = Get-AzureADServicePrincipal -Filter "DisplayName eq '$targetapp'"

然后,我尝试使用以下方法获取分配给该应用程序的角色:

$app.AppRoles

但是 $app.AppRoles 总是返回 null。

我没有使用属于 AzureAD 模块的 Get-AzureADServicePrincipal,而是将其替换为 Get-MgServicePrincipal,它是 MG-Graph 的一部分,通过这样做,$app.AppRoles 不再返回空值。相反,它现在返回分配给应用程序的默认角色及其 GUID。

通过在 “AppRoleId” 字段中使用此 GUID,New-MgGroupAppRoleAssignment 成功执行。

© www.soinside.com 2019 - 2024. All rights reserved.