标签: defaultnetworkcredentials

您如何获得当前登录用户的凭据(NetworkCredential)?

我正在编写一些代码来使用第三方组件,我需要提供一个在我开始使用它时实现ICredentials的对象.

如果我写以下内容......

var credential = new NetworkCredential("MyUsername", "MyPassword");
Run Code Online (Sandbox Code Playgroud)

...并通过"凭证",没关系.但我想传递当前用户的凭据(它是一个Windows服务,因此以指定用户身份运行).

我尝试了以下两种方法,但似乎都不起作用(或返回任何内容):

NetworkCredential credential = System.Net.CredentialCache.DefaultCredentials;
NetworkCredential credential = CredentialCache.DefaultNetworkCredentials;
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议如何获取approriate对象,该对象代表运行该服务的用户名的凭据?

谢谢,罗斯

.net defaultnetworkcredentials

32
推荐指数
1
解决办法
5万
查看次数

DefaultNetworkCredentials或DefaultCredentials

当我需要向代理(本地或网络)提供凭证时,我应该使用哪一个?

这两者之间的确切区别是什么?

.net credentials defaultnetworkcredentials

31
推荐指数
2
解决办法
1万
查看次数

使用DefaultCredentials和DefaultNetworkCredentials

我们很难确定这些凭证对象的工作方式.事实上,他们可能无法按照我们期望的方式工作.这是对当前问题的解释.

我们有2台服务器需要通过webservices相互通信.第一个(让我们称之为Server01)有一个Windows服务作为NetworkService帐户运行.另一个Server02具有与IIS 6.0一起运行的ReportingServices.Windows Service on Server01正在尝试使用Server02ReportingServices WebService生成报告并通过电子邮件发送它们.

所以,这是我们到目前为止所做的尝试.

在运行时设置凭据(这完全正常):

 rs.Credentials = new NetworkCredentials("user", "pass", "domain");
Run Code Online (Sandbox Code Playgroud)

现在,如果我们可以使用通用用户一切都没问题,但是......我们不被允许.因此,我们尝试使用DefaultCredetials或DefaultNetworkCredentials并将其传递给RS Webservice:

rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials
Run Code Online (Sandbox Code Playgroud)

要么:

rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Run Code Online (Sandbox Code Playgroud)

无论哪种方式都行不通.我们总是从IIS获得401 Unauthrorized.现在,我们知道如果我们想要访问记录为NetworkService的资源,我们需要将其授予DOMAIN\MachineName$(http://msdn.microsoft.com/en-us/library/ms998320.aspx):

授予对远程SQL Server的访问权限

如果要访问同一域(或受信任域)中的另一台服务器上的数据库,则使用网络服务帐户的网络凭据对数据库进行身份验证.网络服务帐户的凭据的格式为DomainName\AspNetServer $,其中DomainName是ASP.NET服务器的域,AspNetServer是您的Web服务器名称.

例如,如果ASP.NET应用程序在域CONTOSO中名为SVR1的服务器上运行,则SQL Server将看到CONTOSO\SVR1 $的数据库访问请求.

我们假设以相同的方式授予IIS访问权限.但事实并非如此.或者至少,没有正确设置某些内容以使其正确进行身份验证.

所以,这里有一些问题:

  1. 我们在某个地方读过"模仿用户",我们是否需要在Windows服务中的某处设置?

  2. 是否可以将对NetworkService内置帐户的访问权限授予远程IIS服务器?

谢谢阅读!

web-services credentials defaultnetworkcredentials reporting-services

28
推荐指数
1
解决办法
4万
查看次数

WebClient访问具有凭据的页面

我正在尝试访问同一域/同一个asp.net应用程序的网页,这是受密码保护的.对于发起此呼叫的网页和正在访问的网页,凭据都是相同的.

这是代码,我不知道为什么我总是以登录表单html代码结束?

using (WebClient client = new WebClient())
{
    client.QueryString.Add("ID", "1040"); //add parameters
    //client.Credentials = CredentialCache.DefaultCredentials;
    //I tried to add credentials like this
    client.Credentials = new NetworkCredential("username", "password");

    string htmlCode = client.DownloadString("http://domain.loc/testpage.aspx");
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net webclient credentials defaultnetworkcredentials

24
推荐指数
1
解决办法
7万
查看次数

使用“默认代理”时,用户名/密码来自哪里?

“WebClient”类(还有 ClickOnce)可以使用默认代理设置(例如放入 application.config 中),但是:

\n\n
    \n
  1. 用户名/密码从哪里来?(我看不到 XML 配置中的设置 - 见下文)。
  2. \n
  3. 应用程序是否可以配置为手动提示用户输入用户名/密码
  4. \n
\n\n

http://msdn.microsoft.com/en-us/library/kd3cf2ex.aspx

\n\n
<defaultProxy\nenabled="true|false"\nuseDefaultCredentials="true|false"\n<bypasslist> \xe2\x80\xa6 </bypasslist>\n<proxy> \xe2\x80\xa6 </proxy>\n<module> \xe2\x80\xa6 </module>\n/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

附言。 我刚刚使用以下设置进行了测试,并确认用户名/密码并非来自成功登录的 IE 会话。

\n\n

因此,悬而未决的问题是用户名/密码从哪里来?或者是否必须在自定义应用程序中以编程方式提供,在这种情况下 ClickOnce 会发生什么?(这似乎没有启动任何对话框来允许用户提供用户名/密码)

\n\n
<?xml version="1.0" encoding="utf-8" ?>\n<configuration>\n    <system.net>\n      <defaultProxy enabled="true" useDefaultCredentials="false">\n        <bypasslist>\n          <add address="localhost" />\n        </bypasslist>\n        <proxy usesystemdefault="True" proxyaddress="http://proxy1.health.qld.gov.au:80/" bypassonlocal="False" />\n      </defaultProxy>\n    </system.net>\n</configuration>\n\n\n\nprivate void button2_Click(object sender, EventArgs e)\n{\n    Cursor.Current = Cursors.WaitCursor;\n    try\n    {\n        var wc = new WebClient();\n        var str = wc.DownloadString(textBox1.Text);\n        MessageBox.Show("String = " + str);\n    } \n …
Run Code Online (Sandbox Code Playgroud)

.net proxy defaultproxy defaultnetworkcredentials winforms

5
推荐指数
1
解决办法
7647
查看次数