我們有一個場景,一個WCF服務被托管在IIS上。認證模式是WINDOWS。 我們正在使用WINDOWS認證從CRM插件中呼叫這個WCF服務。
在獲得CRM組織實體時,我們沒有獲得WINDOWS的用戶環境。
private OrganizationDetail DiscoverOrganization(Uri discoveryUri, string organizationName, ClientCredentials lclClientCredentials)
{
DiscoveryServiceProxy serviceProxy。
using (serviceProxy = new DiscoveryServiceProxy(discoveryUri, null, lclClientCredentials, null)
{
IDiscoveryService service = serviceProxy。
var orgsRequest = new RetrieveOrganizationRequest()
{
AccessType = EndpointAccessType.Default,
釋放 = OrganizationRelease.Current,
唯一名稱 = 組織名稱
};
var organizations = (RetrieveOrganizationResponse)service.Execute(orgsRequest);
return organizations.Detail。
}
我們嘗試了如下設定憑證,
lclClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;
lclClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
uj5u.com熱心網友回復:
我不認為你可以通過這種方式將Dynamics客戶端用戶的Windows身份流向Web服務。Dynamics插件在三個Windows賬戶中的一個下執行:
在此之上,分層了呼叫插件的客戶端用戶的Dynamics(systemuser)身份,但不是Windows帳戶。沙盒和異步服務在與 Web 應用程式完全分離的行程中運行,并且可能無法知道呼叫用戶的 Windows 身份。
如果 Web 服務需要呼叫用戶的 CRM 身份(以便在 CRM 中作為該用戶行事),您將需要:
如果 Web 服務需要呼叫用戶的 CRM 身份,您將需要:
systemuser從插件傳遞給Web服務。
systemuser帳戶。
- 編輯補充:可以將其配置為非互動式用戶,以節省許可證。
systemuser Dynamics impersonation 權限,因此它可以作為其他用戶行事。
- 從配置中為傳入的組織檢索適當的連接詳細資訊。
- 明確地冒充(使用Dynamics冒充)傳入的
systemuserGUID。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/316172.html
標籤:
