我开发了一个访问CRM web服务的应用程序。问题是,当我将dll部署到Sharepoint服务器时,它未经授权返回错误401。显然,System.Net.CredentialCache.DefaultCredentials没有起作用(我的怀疑)。这是密码。
CrmSdk.CrmAuthenticationToken token = new CrmSdk.CrmAuthenticationToken();
token.AuthenticationType = AuthenticationType.AD;
token.OrganizationName = ORGANIZATION_NAME;
CrmService service = new CrmService();
service.Url = "http://crmserver:5555/mscrmservices/2007/crmservice.asmx";
service.CrmAuthenticationTokenValue = token;
service.PreAuthenticate = true;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;反之亦然。
当我创建应用程序时,访问Sharepoint的webservice (编码插件)并将其部署到CRM服务器。它无法访问Sharepoint的web服务。未经授权的错误。以下是代码:
Lists listService = new Lists();
listService.PreAuthenticate = true;
listService.Credentials = System.Net.CredentialCache.DefaultCredentials;
listService.Url = "http://sharepointserver/webname/_vti_bin/Lists.asmx";我的CRM服务器和Sharepoint服务器在同一个域中。
对于这两种代码,如果我将凭据部分更改为类似的内容,然后将其部署到服务器上,则它可以运行。
service.Credentials = new NetworkCredential("username", "password", "domain");不过,我不想这样做,因为它在代码中显示了用户的密码。有人能帮我吗?
这两个服务器中的IIS不允许匿名访问,它使用集成Windows身份验证。
谢谢
从我的本地计算机,我可以访问CRM web服务或Sharepoint web服务。我想我是被授权的,因为DefaultCredentials发送我的凭据说它的密码保存在“存储的用户名和密码”中(控制面板>用户帐户>选项卡高级>管理密码),这样我就不必输入:
service.Credentials = new NetworkCredential("username", "password", "domain");我来自本地公司的DefaultCredentials被授权访问web服务。
我试图在访问CRM web服务的Sharepoint服务器上实现这一点。and..tadaa..it不起作用。哈哈..。
我们可以在服务器中向DefaultCredentials注入凭据吗?
我最不想做的就是硬编码用户帐户(就像上面的代码)。
发布于 2009-02-03 03:53:01
可能是您需要运行Kerberos来进行身份验证,但是不能确定,只需要检查设置就会很痛苦。
发布于 2009-02-03 21:16:14
您是否验证了默认凭据与显式声明时相同?这可能是默认的信用要求是那些你不会期待的另一个帐户。
编辑#1:针对MSDN上的DefaultCredentials属性的备注
DefaultCredentials表示运行应用程序的当前安全上下文的系统凭据。对于客户端应用程序,这些通常是运行应用程序的用户的Windows凭据(用户名、密码和域)。对于ASP.NET应用程序,默认凭据是登录用户的用户凭据或模拟的用户凭据。
您还需要确保访问CRM页面的用户(调用SharePoint web服务)可以使用他们的凭据访问web服务,反之亦然。如果他们能做到,那么似乎更有可能发生某种模仿行为。
编辑#2:假设您可以同时访问客户关系管理和SharePoint服务器,那么您可以在应用程序和系统日志中设置一个峰值。其中一个或两者都可能表示登录失败,并指出哪个帐户试图访问资源(在本例中为web服务)。
发布于 2009-06-13 02:39:11
通过使用DefaultCredentials,意味着ASP.NET工作进程或IIS进程将获得运行DefaultCredentials的用户的凭据。
因此,如果您的Dynamics应用程序池是在用户帐户Custom Domain\JohnDoe下运行的,这意味着它将获得用户帐户Custom Domain\JohnDoe下的特权。
请检查运行CRM\Sharepoint应用程序IIS Web应用程序池的用户帐户。
以下是检查应用程序池的步骤:
希望这能有所帮助。
https://stackoverflow.com/questions/505938
复制相似问题