问题描述
我正在尝试仅使用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"
}
]
}