使用 Microsoft CDS Web 设置 PrivilegeDepth API

Set PrivilegeDepth with Microsoft CDS Web API

我正在尝试为仅使用 Web API 的 Common Data Service 环境创建一个应用程序用户及其安全角色。我已经成功地创建了用户、角色并将一些权限关联到角色。我唯一不能做的就是设置 RolePrivilege 关联的 PrivilegeDepth。 这是我用来创建具有一些权限的角色的请求负载:

{
    "businessunitid@odata.bind": "/businessunits(6efad0b7-160b-eb11-a812-000d3ab2a6be)",
    "name": "Security Role Test",
    "iscustomizable": {
        "Value": true,
        "CanBeChanged": true,
        "ManagedPropertyLogicalName": "iscustomizableanddeletable"
    },
    "canbedeleted": {
        "Value": true,
        "CanBeChanged": true,
        "ManagedPropertyLogicalName": "canbedeleted"
    },
    "roleprivileges_association@odata.bind": [
        "/privileges(2493b394-f9d7-4604-a6cb-13e1f240450d)",
        "/privileges(707e9700-19ed-4cba-be06-9d7f6e845383)",
        "/privileges(e62439f6-3666-4c0a-a732-bde205d8e938)",
        "/privileges(e3f45b8e-4872-4bb5-8b84-01ee8f9c9da1)",
        "/privileges(f36ff7e9-72b9-4882-afb6-f947de984f72)",
        "/privileges(886b280c-6396-4d56-a0a3-2c1b0a50ceb0)"
    ]
}

RolePrivileges 都是以最低深度(用户)创建的。谁知道如何设置不同的深度?

另外,有没有更好的方式给角色分配权限?比如,将具有所需权限的 XML 上传到将其与角色相关联的端点?有没有更好的方法来指定权限而无需知道它们的 GUID?

如果你能帮助我,我将不胜感激。谢谢!

这应该是用于设置用户、本地等深度的负载。一定要测试这个,我现在没有机会测试它。 Read more

"roleprivileges_association@odata.bind": [
        {
            "privilegeid@odata.bind" : "/privileges(2493b394-f9d7-4604-a6cb-13e1f240450d)",
            "depth" : 1
        },
    ]

关于动态 guid 值而不是硬编码,只需进行另一个服务调用以拉取所有权限并迭代它们。 Read more

所以我找到了设置权限深度的解决方案。有一个动作,AddPrivelegesRole

示例:

POST https://org12345.crm4.dynamics.com/api/data/v9.0/roles(1b3df93a-070f-eb11-a813-000d3a666701)/Microsoft.Dynamics.CRM.AddPrivilegesRole

{
    "Privileges": [
        {
            "Depth": "0",
            "PrivilegeId": "886b280c-6396-4d56-a0a3-2c1b0a50ceb0",
            "BusinessUnitId": "6efad0b7-160b-eb11-a812-000d3ab2a6be"
        },
        {
            "Depth": "1",
            "PrivilegeId": "7863e80f-0ab2-4d67-a641-37d9f342c7e3",
            "BusinessUnitId": "6efad0b7-160b-eb11-a812-000d3ab2a6be"
        },
        {
            "Depth": "2",
            "PrivilegeId": "d26fe964-230b-42dd-ad93-5cc879de411e",
            "BusinessUnitId": "6efad0b7-160b-eb11-a812-000d3ab2a6be"
        },
        {
            "Depth": "3",
            "PrivilegeId": "ca6c7690-c935-46b3-bfd2-abb306c2acc0",
            "BusinessUnitId": "6efad0b7-160b-eb11-a812-000d3ab2a6be"
        }
    ]
}