微软CRM 2011的前提下跨域认证失败
问题描述:
我有一个CRM 2011的前提下安装在一个域,并且对与Web服务器托管的MVC 3网站,试图访问一个单独的域中的Web服务器(服务器2008)在CRM服务器上发布的服务。微软CRM 2011的前提下跨域认证失败
我使用运行CrmSvcUtil创建的早期绑定实体类。
我的问题是,当我试图从Web服务器上的代码使用的服务,我收到一个“安全令牌请求不能被满足,因为身份验证失败”异常。
如果我CRM安装是前提是它实际上可以从另一台机器上的一个单独的域连接而无需CRM安装的IFD?
我使用的凭据来调用服务...
public override bool ValidateUser(string username, string password)
{
var credentials = SecurityHelper.BuildClientCredentials(_crmUsername, _crmPassword, _domain);
using (_serviceProxy = new OrganizationServiceProxy(new Uri(_organisationUri), null, credentials, null))
{
if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
{
_serviceProxy.EnableProxyTypes();
using (var orgContext = new XrmServiceContext(_serviceProxy))
{......
而我的助手类创建凭据.....
public class SecurityHelper
{
public static ClientCredentials BuildClientCredentials(string username, string password, string domain)
{
var credentials = new ClientCredentials();
credentials.Windows.ClientCredential = new System.Net.NetworkCredential(username, password, domain);
credentials.UserName.UserName = username;
credentials.UserName.Password = password;
return credentials;
}
}
在应用程序池的方面Web服务器位于不同的域中,我可以从CRM框应用用户帐户吗?
答
是的,你应该能够做到这一点。用户是否在CRM中运行MVC网站的应用程序池?或者你是否提供了CRM的呼叫凭证?
答
我们一直有完全相同的问题。如果我们通过代理创建服务,它根本不起作用。
但是,你可以得到这个,如果你在localContext内IOrganizationService引用传递工作,改用该代理方式的。
据我所知,代理创作的意图是当您连接到CRM应用程序之外。在插件内部时,Microsoft将为您提供所有需要的对象引用。
(有人能够创建一个插件内的服务代理,并且实际上它工作吗?)