Microsoft KB Archive/822456

= How to authenticate specific user credentials by using the Microsoft CRM Security Model from an external process =

Article ID: 822456

Article Last Modified on 5/23/2007

-

APPLIES TO

 Microsoft CRM Software Development Kit, when used with:  Microsoft CRM 1.2

 Microsoft Business Solutions CRM 1.0  Microsoft CRM 1.2 Microsoft Business Solutions CRM 1.0

-

<div class="summary_section">

SUMMARY
This article describes the recommended way to authenticate specific user credentials by using the Microsoft Customer Relationship Management (CRM) Security Model from an external process.

<div class="moreinformation_section">

MORE INFORMATION
To manually load the CredentialCache method of the client proxy class, you must understand the System.Net.CredentialCache class. For more information, visit the following MSDN Web site:

.NET Framework Class Library - CredentialCache.Add Method

http://msdn2.microsoft.com/en-us/library/system.net.credentialcache.add(vs.71).aspx

Microsoft CRM uses integrated Microsoft Windows authentication to perform authentication. As a result, the following Microsoft C# code loads the CredentialCache method of the Microsoft CRM proxy class on the server where the process that is integrating with Microsoft CRM resides. {

// Set the name of the server to the name of the Microsoft CRM API Web server.

string server = &quot;CRMWebServer&quot;;

// Virtual Directory on the Microsoft CRM API Web server.

string virtualDirectory = &quot;mscrmservices&quot;; string strDir = &quot;http://&quot; + server + &quot;/&quot; + virtualDirectory + &quot;/&quot;;

// Instantiate a Microsoft CRM BizUser object (Member of Microsoft.CRM.Proxy.dll).

Microsoft.CRM.Proxy.BizUser bizUser = new Microsoft.CRM.Proxy.BizUser ;

bizUser.Url = strDir + &quot;BizUser.srf&quot;;

// Instantiate a System.Net.CredentialCache object.

System.Net.CredentialCache credentialCache = new CredentialCache;

// Instantiate a System.Net.NetworkCredential object passing in the Active Directory UserName, // Password and Domain that will be used to authenticate into the Microsoft CRM Security Model. // Set up this user in Microsoft CRM and give the user the appropriate License Keys and Roles.

System.Net.NetworkCredential credentials = new System.Net.NetworkCredential + (&quot;User1&quot;,&quot;Password&quot;,&quot;Domain&quot;);

// Add a value to the CredentialCache to indicate the URI of the Microsoft CRM Server, &quot;NTLM&quot;, // which represents integrated Windows authenticated and the credentials of // the user who is to be used for authentication.

credentialCache.Add(new Uri(&quot;http://&quot; + server), &quot;NTLM&quot;, credentials);

bizUser.Credentials = credentialCache;

} Each time that the Web application has to authenticate to the Microsoft CRM API classes and pass lead data, the application passes the credentials of User 1. When a record is created or updated from the Web application to Microsoft CRM, the CreatedBy field and the LastUpdatedBy field are populated with User 1's credentials.

<div class="references_section">