首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问客户关系管理/共享网站服务的DefaultCredentials

访问客户关系管理/共享网站服务的DefaultCredentials
EN

Stack Overflow用户
提问于 2009-02-03 03:34:48
回答 7查看 10.5K关注 0票数 7

我开发了一个访问CRM web服务的应用程序。问题是,当我将dll部署到Sharepoint服务器时,它未经授权返回错误401。显然,System.Net.CredentialCache.DefaultCredentials没有起作用(我的怀疑)。这是密码。

代码语言:javascript
复制
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服务。未经授权的错误。以下是代码:

代码语言:javascript
复制
Lists listService = new Lists();
listService.PreAuthenticate = true;
listService.Credentials = System.Net.CredentialCache.DefaultCredentials;
listService.Url = "http://sharepointserver/webname/_vti_bin/Lists.asmx";

我的CRM服务器和Sharepoint服务器在同一个域中。

对于这两种代码,如果我将凭据部分更改为类似的内容,然后将其部署到服务器上,则它可以运行。

代码语言:javascript
复制
service.Credentials = new NetworkCredential("username", "password", "domain");

不过,我不想这样做,因为它在代码中显示了用户的密码。有人能帮我吗?

这两个服务器中的IIS不允许匿名访问,它使用集成Windows身份验证。

谢谢

从我的本地计算机,我可以访问CRM web服务或Sharepoint web服务。我想我是被授权的,因为DefaultCredentials发送我的凭据说它的密码保存在“存储的用户名和密码”中(控制面板>用户帐户>选项卡高级>管理密码),这样我就不必输入:

代码语言:javascript
复制
service.Credentials = new NetworkCredential("username", "password", "domain");

我来自本地公司的DefaultCredentials被授权访问web服务。

我试图在访问CRM web服务的Sharepoint服务器上实现这一点。and..tadaa..it不起作用。哈哈..。

我们可以在服务器中向DefaultCredentials注入凭据吗?

我最不想做的就是硬编码用户帐户(就像上面的代码)。

EN

回答 7

Stack Overflow用户

发布于 2009-02-03 03:53:01

可能是您需要运行Kerberos来进行身份验证,但是不能确定,只需要检查设置就会很痛苦。

票数 1
EN

Stack Overflow用户

发布于 2009-02-03 21:16:14

您是否验证了默认凭据与显式声明时相同?这可能是默认的信用要求是那些你不会期待的另一个帐户。

编辑#1:针对MSDN上的DefaultCredentials属性的备注

DefaultCredentials表示运行应用程序的当前安全上下文的系统凭据。对于客户端应用程序,这些通常是运行应用程序的用户的Windows凭据(用户名、密码和域)。对于ASP.NET应用程序,默认凭据是登录用户的用户凭据或模拟的用户凭据。

您还需要确保访问CRM页面的用户(调用SharePoint web服务)可以使用他们的凭据访问web服务,反之亦然。如果他们能做到,那么似乎更有可能发生某种模仿行为。

编辑#2:假设您可以同时访问客户关系管理和SharePoint服务器,那么您可以在应用程序和系统日志中设置一个峰值。其中一个或两者都可能表示登录失败,并指出哪个帐户试图访问资源(在本例中为web服务)。

票数 1
EN

Stack Overflow用户

发布于 2009-06-13 02:39:11

通过使用DefaultCredentials,意味着ASP.NET工作进程或IIS进程将获得运行DefaultCredentials的用户的凭据。

因此,如果您的Dynamics应用程序池是在用户帐户Custom Domain\JohnDoe下运行的,这意味着它将获得用户帐户Custom Domain\JohnDoe下的特权。

请检查运行CRM\Sharepoint应用程序IIS Web应用程序池的用户帐户。

以下是检查应用程序池的步骤:

  1. 打开网站->,右键单击->选择属性
  2. 选择“家庭目录”选项卡
  3. 请注意下面下拉列表中的Application名称
  4. 现在,转到应用程序池文件夹
  5. 尝试查找已在步骤3 ->中列出的应用程序池名称,右键单击并选择“属性”
  6. 选择"Identity“选项卡,您将找到运行应用程序池的用户帐户。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/505938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档