Integration SharePoint Portal Server 2003 und Microsoft CRM

Hallo,

ich bin langsam am verzweifeln, wir versuchen Daten vom CRM Server in einem eigens programmierten WebPart anzuzeigen. Wenn ich nun versuche mittels

service.Credentials = System.Net.CredentialCache.DefaultCredentials;

die Anmelde-Daten des Benutzer an der CRM Server zu übergeben funktioniert das nicht:

A general exception was thrown when attempting to connect to the
Microsoft CRM
service. Beim Downloaden von
'http://server:5555/mscrmservices/2006/crmservice.asmx' ist ein Fehler
aufgetreten.

Ich habe schon bei Google in diversen Foren und Blogs diesen Problem aufgesucht,
und bin immer wieder auf das Problem von "Trusted Delegation" bzw. "double-hop issue" gestoßen.

Das bedeutet das der Server der die Daten weiter geben soll, im AD als "Trusted Delegation" gesetzt werden muss. Das haben wir auch getan, aber es ändert sich nichts.
Ich habe auch irgendwo gefunden, das das Dienst-Konto auch auf "Trusted Delegation" stehen muss, aber was für ein Dienst-Konto ist gemeint?

Weiß jemand ein Workaround oder eine Lösung für dieses Problem?

Vielen Dank
D.M.


AW: Integration SharePoint Portal Server 2003 und Microsoft CRM

Hi D.M.,


vorstellbar, dass euer Problem mit impersonation zu tun hat, da mir nicht bekannt ist, wie die Webanwendung konfiguriert ist.
Als welcher User kommst du denn beim CRM an, wenn du vom Webpart den Request an den CRM-WS stellst? Evtl. ist es ja dann ein Konto, welches keine Rechte hat den WS des CRM zu konsumieren.


--> For ASP.NET applications, the default credentials are the user credentials of the logged-in user, or the user being impersonated.


Nur eine Idee zum Testen - bau dir mal ein deinem Webpart einen eigenen Credential-Cache und gib dem WS einen User an, der definitiv das CRM verwenden darf.


Code-Sample:



CredentialCache credentialCache = new CredentialCache();
NetworkCredential credentials = new NetworkCredential("thomas","thomaspass","crmdomain");
// Standard CRM Service Setup
service = new CrmService();
credentialCache.Add(new Uri(service.Url), "NTLM", credentials);
service.Credentials = credentialCache;
service.PreAuthenticate = true;


// Get Current User Id
WhoAmIRequest userRequest = new WhoAmIRequest();
user = (WhoAmIResponse) service.Execute(userRequest);
Console.WriteLine("CRM Connection succeeded (" + service.Url + ").");
Console.WriteLine("BusinessUnitId:\t" + user.BusinessUnitId.ToString());
Console.WriteLine("UserId:\t" + user.UserId.ToString());

Gruß,
Thomas