Showing posts with label Authentication. Show all posts
Showing posts with label Authentication. Show all posts

Wednesday, 30 January 2013

CRM 2011 On Premise Customer Portal - Authentication by Active Directory

Hi all,

Since, last few days, I found out many people struggling with how to configure Customer Portal for CRM On Premise without using Window Live ID. So today, I am going to show you guys how to configure Customer Portal for CRM On Premise and using Active Directory authentication instead of using Window Live ID (which is for CRM Online).

Here is the step by step:

1. Download the Customer Portal for CRM 2011 - using AD from this blog:
http://community.adxstudio.com/blogs/shan/customer-portal-modifications/

That's is the Zip file of Customer Portal CRM 2011 (as you could download from pinpoint also). However, in this version, the blog author changed some codes and configuration values inside, which will help you to use the Active Directory authentication for the portal.

2. After unzip the folder, please navigate to the "Documentation" folder, open the "Customer Portal Deployment Guide_OnPremises_V2.0" file. Start from "Deployment Steps", you now follow the document from step 1 to step 3:
     - Step 1: Follow the document to import the solution into your CRM.

     - Step 2: You could skip this step. No need to do anything with it.

     - Step 3: Going your "SDK" folder (you should download SDK for CRM from Microsoft Source) --> Tools --> WebsiteCopy --> launch the "WebsiteCopy.exe" file. And follow step by step in the document.
      Note: in the end of the copy website process, the wizard will ask you to copy the "connectionString", you please copy it to somewhere.

So in the end of this stage, you have your Customer Portal in CRM as shown in below image !


3. In the "Customer Portal" folder (which you unzip at step 2), navigate to CustomerPortal --> Web --> Web.config file. Open the file, look at the "connectionStrings" part and especially the bold lines:

 <connectionStrings>
    <add name="Xrm" connectionString="ServiceUri=http://crm2011/Contoso; Domain=CONTOSO; Username=webportal;
Password=pass@word1"/>
    <add name="ADConnectionString" connectionString="
LDAP://contoso.com/CN=Users,DC=contoso,DC=com" />  
  <!--<add name="Live" connectionString="Application Id=0000000000000000; Secret=00000000000000000000000000000000"/>-->
    <!--<add name="Bus" connectionString="Service Namespace=???; Service Path=???; Issuer Name=???; Issuer Secret=???; Include Exception Detail In Faults=true"/>-->
  </connectionStrings>


Now, you need to change the connectionString (bold lines) into the correct: CRM URL (http://crmserver-name/domain-name), Domain, Username (of administrator, for example) and password. For the next line, do the same thing, change URL, Username, Domain (DC).

**Note: The username here should be the one has been created in AD, so later this AD account will be used to login the portal via AD Authentication.

4. In the same server, open IIS Manager (Internet Information Services):

- Navigating to "Sites" node, click right mouse to create a new website. Give approciate name for the website and put the physical path as the file in Customer Portal folder.

- After creating the website, right click on it in Application Tool tab, change the .NetFramework version to v4.030319.


  
- Finally, try to browse your website in IIS, now the portal will work and it connected to your CRM, using AD Authentication !


I hope the post is useful for you guys ;)
 

Friday, 15 June 2012

CRM 2011 Online Authentication for Custom Web application

Hi everyone,

Long time no post.

Today I would like to show you guys how to authentication CRM 2011 Online in coding .Net C#.
The objective is: creating a custom web application capturing contact information, then updating the information into CRM Online.

For CRM On Premise, to do so, you guys could follow exactly the same to this blog: http://blogs.msdn.com/b/crminthefield/archive/2011/06/03/microsoft-dynamics-crm-2011-custom-contact-entry-website-using-early-bound-entity-classes.aspx

However, in order to connect to CRM 2011 Online using IOrganizationService Web Service, you need to change the code a bit to make the authentication through (Remember, CRM On Premise using AD authentication, but CRM Online using Windows Live ID to do that).

So please, following the above blog until the code inside and using the below code for CRM Online Authentication:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.ServiceModel.Description;
using Microsoft.Xrm.Sdk.Client;
using Microsoft.Crm;
using Microsoft.Crm.Tools;
using System.Net;
using Microsoft.Xrm.Sdk;
using Microsoft.Crm.Services.Utility;
namespace CRM_Test2
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        private static ClientCredentials GetDeviceCredentials()
        {
            return Microsoft.Crm.Services.Utility.DeviceIdManager.LoadOrRegisterDevice();
        }


        protected void Button1_Click(object sender, EventArgs e)
        {
            //Authenticate using credentials of the logged in user;
            string UserName = "abc@hotmail.sg";   //your Windows Live ID
            string Password = "crmadmin@123";    // your password
            ClientCredentials Credentials = new ClientCredentials();
            Credentials.UserName.UserName = UserName;
            Credentials.UserName.Password = Password;
     
            Credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
            //This URL needs to be updated to match the servername and Organization for the environment.
            Uri OrganizationUri = new Uri("https://<CRM-Online-Server-Name>/XRMServices/2011/Organization.svc");           //this URL could copy from Setting --> Developer Source
         
           Uri HomeRealmUri = null;
            //OrganizationServiceProxy serviceProxy;  
            using (OrganizationServiceProxy serviceProxy = new OrganizationServiceProxy(OrganizationUri, HomeRealmUri, Credentials, GetDeviceCredentials()))
           
           {
                IOrganizationService service = (IOrganizationService)serviceProxy;
          
            //Instantiate the contact object and populate the attributes.                     
            Contact contact = new Contact();
            contact.FirstName = txtFirstName.Text.ToString();
            contact.LastName = txtLastName.Text.ToString();
            contact.EMailAddress1 = txtEmailAddress.Text.ToString();
            Guid newContactId = service.Create(contact);           
         
            //This code will clear the textboxes after the contact is created.
            txtFirstName.Text = "";
            txtLastName.Text = "";
            txtEmailAddress.Text = "";
            txtPhoneNumber.Text = "";

            }
        }
       
    }
}

Notice the red lines in above code. That's the difference between authenticate in CRM Online and On Premise. For Online version, you need to call the function named "GetDeviceCredentials()", which is defined as private function before that. In order to use this function, you MUST to add one more item which is from SDK --> SampleCode --> Cs --> deviceidmanager.cs. So add this new item into your solution.

After adding the deviceidmanager.cs item, open the cs file and add one more nesscessary reference for using the item, which is: System.Security.Cryptography.

Then now build the whole solution ! Everything is done !

Any question or unclear point. Please drop me an email at linhhk87@gmail.com. I will reply you very quick ;)

Have a nice weekend ;)