استخدام API للويب لانتحال صفة مستخدم آخر
في بعض الأحيان، قد تحتاج إلى تشغيل المنطق لمستخدم آخر. في سياق Microsoft Dataverse، يطبق المنطق الخاص بك جميع الأدوار المناسبة والأمان المستند إلى الكائن بناءً على المستخدم الذي تنتحل شخصيته. يمكن أن تكون هذه الطريقة فعالة بشكل خاص عندما تقوم بدمج الأنظمة الخارجية مع Dataverse حل حيث يكون حساب التكامل هو حساب نظام مقابل المستخدم الذي قام باستدعاء الطلب بالفعل.
تطبيق طلب API للويب مع انتحال المستخدم
عند استدعاء أي أسلوب Web API، يمكنك توفير CallerObjectId فِي رأس الرسالة للإشارة إلى أنك تريد تشغيل الرسالة كمستخدم معين. قيمة هذه المعلمة هي معرف الكائن من Microsoft Entra ID. توفر واجهة API لمخطط Microsoft Entra طريقة للاستعلام عن بيانات مستخدم Microsoft Entra. لمزيد من المعلومات، راجع مرجع واجهة API لمخطط Microsoft Entra ID.
تحديد المستخدم الذي قام بإجراء العملية
إذا كنت تريد رؤية معرف المستخدم الذي قام بالفعل بإجراء عملية لمستخدم آخر، فيمكنك الاستعلام عن createdonbehalfby قيمة السجل، الذي يحتوي على هذه التفاصيل. على سبيل المثال، إذا كنت تريد معرفة ما إذا كان قد تم إنشاء صف حساب من خلال انتحال شخصية المستخدم بدلاً من المستخدم الفعلي، فيمكنك الاستعلام عن سجل الحساب هذا لمقارنة قيمه createdby وقيم createdonbehalfby باستخدام الاستعلام التالي:
GET [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-000000000003)?$select=name&$expand=createdby($select=fullname),createdonbehalfby($select=fullname),owninguser($select=fullname) HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
إذا قام حساب منتحل بإنشاء السجل، فيمكنك توقع استجابة مشابهة للمثال التالي:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
ETag: W/"506868"
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,createdby(fullname,azureactivedirectoryobjectid),createdonbehalfby(fullname,azureactivedirectoryobjectid),owninguser(fullname,azureactivedirectoryobjectid))/$entity",
"@odata.etag": "W/"2751197"",
"name": "Sample Account created using impersonation",
"accountid": "00000000-0000-0000-000000000003",
"createdby": {
"@odata.etag": "W/"2632435"",
"fullname": "Impersonated User",
"azureactivedirectoryobjectid": "",
"systemuserid": "75df116d-d9da-e711-a94b-000d3a34ed47",
"ownerid": "75df116d-d9da-e711-a94b-000d3a34ed47"
},
"createdonbehalfby": {
"@odata.etag": "W/"2632445"",
"fullname": "Actual User",
"azureactivedirectoryobjectid": "",
"systemuserid": "278742b0-1e61-4fb5-84ef-c7de308c19e2",
"ownerid": "278742b0-1e61-4fb5-84ef-c7de308c19e2"
},
"owninguser": {
"@odata.etag": "W/"2632435"",
"fullname": "Impersonated User",
"azureactivedirectoryobjectid": ",
"systemuserid": "75df116d-d9da-e711-a94b-000d3a34ed47",
"ownerid": "75df116d-d9da-e711-a94b-000d3a34ed47"
}
}