2011-06-10 107 views
1

我正在寻找一种通过Microsoft CRM 4.0 Web服务API来验证用户(给定用户名和密码)的方法。理想情况下,我想根据登录用户有权访问哪些项目来筛选项目列表。我可能能够弄清楚第二部分,但我无法找到验证用户的方法。当前在网络服务中制作的所有卡片的方式是:使用MS Crm Web服务进行身份验证

MyWebServices.CrmService svc = new MyWebServices.CrmService(); 
MyWebServices.CrmAuthenticationToken token = new MyWebServices.CrmAuthenticationToken(); 
token.OrganizationName = "MyCRM"; 
token.AuthenticationType = 0; 
svc.CrmAuthenticationTokenValue = token; 
svc.PreAuthenticate = true; 
svc.Credentials = System.Net.CredentialCache.DefaultCredentials; 
svc.Credentials = new NetworkCredential("hj", "mypass", "mydomain"); 

然后可以通过服务进行调用。我想我可能会尝试通过用户的用户名/密码对CRM进行身份验证,但是不知何故,它感觉错了。

回答

1

如果您处于室内环境,您应该能够使用以下代码获取可用于检索项目的有效CRM服务。

public static Microsoft.Crm.SdkTypeProxy.CrmService GetCrmService(string crmServerUrl, string organizationName, System.Net.NetworkCredential networkCredential) 
{ 
    // Setup the Authentication Token 
    CrmAuthenticationToken crmAuthenticationToken = new CrmAuthenticationToken 
              { 
               OrganizationName = organizationName, 
               AuthenticationType = 0 
              }; 

    var crmServiceUriBuilder = new UriBuilder(crmServerUrl) { Path = "//MSCRMServices//2007//CrmService.asmx" }; 

    // Instantiate a CrmService 
    var crmService = new Microsoft.Crm.SdkTypeProxy.CrmService 
    { 
     Url = crmServiceUriBuilder.ToString(), 
     UseDefaultCredentials = false, 
     Credentials = networkCredential, 
     CrmAuthenticationTokenValue = crmAuthenticationToken 
    }; 

    return crmService; 
} 
+1

cchamberlain您好,我有一个类似的问题,这个代码适用于我的前提,但我试图使用CRM服务器的URL cloudapp.net从网站还主持在蔚蓝的联系我的CRM服务器,但尽管在整个 – Jay 2016-08-09 11:40:46

+1

@Jay上传递了详细的AD详细信息,AD方法似乎仍然无法正常工作对不起,我已经走出了4年左右的动态频谱。我猜测这是因为您正在尝试从非云端应用程序向云端应用程序验证您的本地AD。上面的代码依赖于您的计算机位于域(网络凭据)。我的假设是你必须使用他们的OAuth API与CRM跨域进行通信。 https://msdn.microsoft.com/en-us/library/gg327838.aspx – cchamberlain 2016-08-10 14:23:51

相关问题