1

我正在尝试仅使用 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?

如果您能帮我解决这个问题,我将不胜感激。谢谢!

4

2 回答 2

0

所以我找到了设置权限深度的解决方案。有一个动作,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"
        }
    ]
}
于 2020-10-21T09:12:17.373 回答
0

这应该是用于设置深度(如用户、本地等)的有效负载。确保测试它,我现在没有机会测试它。阅读更多

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

关于动态 guid 值而不是硬编码,只需进行另一个服务调用以提取所有权限并对其进行迭代。阅读更多

于 2020-10-19T02:18:48.130 回答