【问题标题】:Authenticate with MS Crm Web Service使用 MS Crm Web 服务进行身份验证
【发布时间】:2011-06-10 08:41:38
【问题描述】:

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

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 进行身份验证,但不知何故感觉不对。

【问题讨论】:

    标签: web-services crm dynamics-crm-4 service-tier


    【解决方案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;
    }
    

    【讨论】:

    • 您好 cchamberlain,我有类似的问题,此代码适用于我的内部部署,但我正在尝试使用 crm 服务器的 cloudapp.net URL 从同样托管在 azure 中的网站联系我的 crm 服务器但是尽管传递了 AD 详细信息,但 AD 方法似乎不起作用
    • @Jay 对不起,我已经离开动力学谱 4 年左右了。我猜这是因为您正在尝试从非域计算机从云应用程序向本地 AD 进行 AD 身份验证。上面的代码依赖于您的机器在域中(网络凭据)。我的假设是您必须使用他们的 OAuth API 与 CRM 跨域通信。 msdn.microsoft.com/en-us/library/gg327838.aspx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 2014-06-08
    • 2018-06-17
    • 1970-01-01
    相关资源
    最近更新 更多