使用Microsoft CDS Web API设置PrivilegeDepth

问题描述

我正在尝试仅使用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,"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",{
            "Depth": "2","PrivilegeId": "d26fe964-230b-42dd-ad93-5cc879de411e",{
            "Depth": "3","PrivilegeId": "ca6c7690-c935-46b3-bfd2-abb306c2acc0","BusinessUnitId": "6efad0b7-160b-eb11-a812-000d3ab2a6be"
        }
    ]
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...