标签: networkcredentials

在c#中通过gmail发送邮件时更改发件人地址

我使用以下代码使用Gmail帐户从我的Web应用程序发送邮件.我的问题是,我可以将发件人地址更改为原始发件人(gmail)地址以外的其他地址吗?我的代码如下:

System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
System.Net.NetworkCredential cred = new System.Net.NetworkCredential("sample@gmail.com", "*******");
Run Code Online (Sandbox Code Playgroud)

无论我做什么都没用,因为我总是收到邮件sample@gmail.com.是否有可能改变它?

我已经改为 mail.From = new System.Net.Mail.MailAddress("sample@yahoo.com");但是我收到了来自发件人地址的邮件,sample@gmail.com而不是来自新的"发件人"地址.我认为gmail smtp用原始凭证覆盖起始地址.

c# gmail smtp networkcredentials

25
推荐指数
3
解决办法
4万
查看次数

无法获取网络凭据

所以我一直在使用DotNetOpenAuth一段时间,今天我需要添加对提供程序的支持,迫使我发送带有基本身份验证的密钥(我一直在使用旧版本,只有Post参数)

我试过用ClientCredentialApplicator.NetworkCredential,它没用.然后根据这里的建议,我已经做了我自己的ClientCredentialApplicator.

我仍然没有工作,我把断点放进去ApplyClientCredential,他们从来没有打过.

我升级到最新版本(4.3.0.0),应该有这个修复.

一切正常,但没有Authorization标题,远程服务器回答301错误(这让我认为它与提交相同的问题 - 授权信息未添加到请求,直到服务器回答Unauthorized和我正在使用的提供程序当没有Authorization标题时回答301

c# basic-authentication dotnetopenauth networkcredentials oauth-2.0

14
推荐指数
1
解决办法
2244
查看次数

WebProxy错误:需要代理身份验证

我使用以下代码从互联网获取html数据:

WebProxy p = new WebProxy("localproxyIP:8080", true);
p.Credentials = new NetworkCredential("domain\\user", "password");
WebRequest.DefaultWebProxy = p;
WebClient client = new WebClient();
string downloadString = client.DownloadString("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)

但出现以下错误:"需要代理身份验证".我无法使用默认代理,因为我的代码是在没有默认代理设置的特殊帐户下从Windows服务运行的.所以,我想在我的代码中指定所有代理设置.请告诉我如何解决此错误.

.net c# webclient webproxy networkcredentials

13
推荐指数
2
解决办法
3万
查看次数

如何验证域凭据(来自本机代码)?

我想针对域控制器验证一组凭据.例如:

Username: joel
Password: splotchy
Domain:   STACKOVERFLOW
Run Code Online (Sandbox Code Playgroud)

在.NET 3.5及更高版本中,您可以使用PrincipalContext.ValidateCredentials(username, password).

否则你就麻烦了.

按照Microsoft知识库文章如何验证Microsoft操作系统上的用户凭据中的代码,我到达您调用的位置AcceptSecurityContext:

ss = AcceptSecurityContext(
      @pAS._hcred,           //[in]CredHandle structure
      phContext,             //[in,out]CtxtHandle structure
      @InBuffDesc,           //[in]SecBufferDesc structure 
      0,                     //[in]context requirement flags
      SECURITY_NATIVE_DREP,  //[in]target data representation
      @pAS._hctxt,           //[in,out]CtxtHandle strcture
      @OutBuffDesc,          //[in,out]SecBufferDesc structure
      ContextAttributes,     //[out]Context attribute flags
      @Lifetime);            //[out]Timestamp struture
Run Code Online (Sandbox Code Playgroud)

除了函数失败:

SEC_E_NO_AUTHENTICATING_AUTHORITY (0x80090311)

功能失败了.无法联系任何权限进行身份验证.这可能是由于以下条件:

  • 身份验证方的域名不正确.
  • 该域名不可用.
  • 信任关系失败了.

这将是一个有用的错误,除了我可以使用以下方法从.NET 3.5验证相同的凭据:

using (PrincipalContext context = new PrincipalContext(ContextType.Domain, domain))
{
    valid = context.ValidateCredentials(username, password);                
}
Run Code Online (Sandbox Code Playgroud)

可能发生什么允许.NET验证一组凭据,而本机代码不能?


更新:LogonUser也失败了:

LogonUser("joel@stackoverflow.com", …
Run Code Online (Sandbox Code Playgroud)

security ntlm kerberos networkcredentials

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

ASP.NET中的NetworkCredential错误

我正在尝试使用NetworkCredential类通过ASP.NET访问网页.但是我继续通过以下消息获得异常System.Security.Cryptography.CryptographicException: The handle is invalid

下面是关于我如何调用该函数的代码.任何帮助是极大的赞赏.

C#:

System.Net.WebClient client = new System.Net.WebClient();
client.Credentials = new System.Net.NetworkCredential("Admin", "Nimda");
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

[CryptographicException: The handle is invalid.
]

System.Security.SecureString.ProtectMemory() +154
   System.Security.SecureString.InitializeSecureString(Char* value, Int32 length) +170
   System.Security.SecureString..ctor(Char* value, Int32 length) +65
   System.Net.SecureStringHelper.CreateSecureString(String plainString) +6181188
   System.Net.NetworkCredential..ctor(String userName, String password) +64
Run Code Online (Sandbox Code Playgroud)

c# asp.net webclient cryptographicexception networkcredentials

6
推荐指数
2
解决办法
5509
查看次数

如何跨多个HttpWebRequests"共享"NTLM身份验证?

我的C#app点击使用NTLM身份验证的Web服务器.

我发现每个向服务器发出的请求(使用新的HttpWebRequest)都是单独验证的.换句话说,每个请求都会产生401响应,然后在我获得实际响应之前发生NTLM握手会话.

例如:

第一个GET请求:

-> GET xyz 
<- 401 error (WWW-Authenticate:NTLM)

-> GET xyz (Authorization:NTLM base64stuff)
<- 401 error (WWW-Authenticate:NTLM base64stuff)

-> GET xyz (Authorization: base64stuff)
<- 200
Run Code Online (Sandbox Code Playgroud)

后续要求:

-> GET xyz (Authorization:NTLM base64stuff)
<- 401 error (WWW-Authenticate:NTLM) //can this request be avoided?

-> GET xyz (Authorization: base64stuff)
<- 200
Run Code Online (Sandbox Code Playgroud)

(最初,在PreAuthenticate设置为false的情况下,后续请求看起来像第一个请求 - 即每个'请求'有三个基础请求)

有没有办法通过后续的HttpWebRequests"共享"第一次请求对服务器执行的身份验证?

我想也许该UnsafeAuthenticatedConnectionSharing属性允许我这样做,但是对于应用程序中使用的所有HttpWebRequest对象将其设置为true都没有效果.

但是,如果我设置PreAuthenticate为true,则在第一个请求之后,每个请求会发生少于401的响应.

c# ntlm httpwebrequest networkcredentials

6
推荐指数
1
解决办法
2251
查看次数

以编程方式连接到TFS获取"TF30063:您未经授权"错误

我正在尝试在c#中创建一个程序,允许我连接到我的TFS以创建新的工作项.

NetworkCredential netCred = new NetworkCredential(
"username",
"password");
BasicAuthCredential basicCred = new BasicAuthCredential(netCred);
TfsClientCredentials tfsCred = new TfsClientCredentials(basicCred);
tfsCred.AllowInteractive = false;

TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(
new Uri("https://example.visualstudio.com/DefaultCollection"),tfsCred);

tpc.Authenticate();
Run Code Online (Sandbox Code Playgroud)

在我尝试连接到TFS的那一刻,我正在使用我自己的Live用户名和密码,它给出了错误消息"TF30063:您未经授权".我不确定与TFS建立连接的不同方法.

我相信正确的方法是使用服务凭据,但目前我无法锻炼如何找到服务凭据我不知道如何在TFS中找到我的服务凭据.

api service tfs credentials networkcredentials

6
推荐指数
1
解决办法
2210
查看次数

HtmlAgilityPack和身份验证

如果给定一个特定的url,我有一个获取id和xpath的方法.如何通过请求传递用户名和密码,以便我可以抓取需要用户名和密码的网址?

using HtmlAgilityPack;

_web = new HtmlWeb();

internal Dictionary<string, string> GetidsAndXPaths(string url)
{
    var webidsAndXPaths = new Dictionary<string, string>();
    var doc = _web.Load(url);
    var nodes = doc.DocumentNode.SelectNodes("//*[@id]");
    if (nodes == null) return webidsAndXPaths;
    // code to get all the xpaths and ids
Run Code Online (Sandbox Code Playgroud)

我应该使用Web请求获取页面源,然后将该文件传递给上面的方法吗?

var wc = new WebClient();
wc.Credentials = new NetworkCredential("UserName", "Password");
wc.DownloadFile("http://somewebsite.com/page.aspx", @"C:\localfile.html");
Run Code Online (Sandbox Code Playgroud)

c# networkcredentials html-agility-pack

6
推荐指数
1
解决办法
5182
查看次数

将 NetworkCredentials 转换为 PSCredentials?

是否可以将 NetworkCredentials(或变体)转换为 PSCredential?

我想透明地使用当前用户的凭据,但不想提示他们。

c# security authentication powershell networkcredentials

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

HttpWebRequest DefaultNetworkCredentials 给出错误 401

我正在尝试使用HttpWebRequest请求需要 Windows 身份验证的 url ,我正在使用

request.Credential = New NetworkCredential("username", "password");
Run Code Online (Sandbox Code Playgroud)

一切正常,直到我决定不硬记录用户名和密码,然后切换到

request.Credential = CredentialCache.DefaultNetworkCredentials;
Run Code Online (Sandbox Code Playgroud)

然后我得到了 401 未经身份验证的错误。我检查了我的用户

WindowsIdentity.GetCurrent();
Run Code Online (Sandbox Code Playgroud)

它正确返回我的用户名,但是

CredentialCache.DefaultNetworkCredentials;
Run Code Online (Sandbox Code Playgroud)

返回我的用户名、域的空字符串...几乎所有内容都是空字符串.. 太糟糕了HttpWebRequest.Credential期待ICredential意味着我无法将WindowsIdentity.GetCurrent()设置为它。

无论如何,我可以将我当前的登录用户传递给HttpWebRequest.Credential吗?

CredentialCache.DefaultNetworkCredentials; 正确的方法?或者我只是缺少一些设置?

我已经阅读了一些像这样的文章 http://msdn.microsoft.com/en-us/library/ms998351.aspx

它要么太长太复杂,我无法理解,要么不起作用。我是新手,希望在这里得到一些直接的答案。

c# asp.net credentials httpwebrequest networkcredentials

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