无法获取网络凭据

时间:2013-05-17 19:16:22

标签: c# oauth-2.0 dotnetopenauth basic-authentication networkcredentials

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

我尝试过使用ClientCredentialApplicator.NetworkCredential,但它没有用。然后根据建议here,我已经创建了自己的ClientCredentialApplicator

我仍然没有工作,我在ApplyClientCredential中设置了断点,但它们从未命中过。

我已升级到最新版本(4.3.0.0),该版本应为this fix

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

3 个答案:

答案 0 :(得分:1)

这是代码。当使用WebClients和FtpWebRequests时,它适用于我,e.t.c

using System.Net;

NetworkCredential credentials = new NetworkCredential("user","pass");
request.Credentials = credentials;

希望有所帮助:)

答案 1 :(得分:0)

您可以通过访问request.Headers集合手动向HttpWebRequest添加基本身份验证标头。

您可以在Wikipedia上的指示后添加标题:

request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new UTF8Encoding(false).GetBytes("username:password")));

答案 2 :(得分:0)

我有类似的要求:需要HTTP Basic Authentication的OAuth2提供商。这个解决方案对我有用:

var authServer = new AuthorizationServerDescription { AuthorizationEndpoint = new Uri(AuthorizeUrl), TokenEndpoint = new Uri(AccessTokenUrl) };
var authClient = new WebServerClient(authServer, ConsumerKey, ConsumerSecret)
{
    ClientCredentialApplicator = ClientCredentialApplicator.NetworkCredential(ConsumerSecret)
};

使用带有DotNetOpenAuth.OAuth2.ClientCredentialApplicator.NetworkCredentialApplicator实例的System.Net.NetworkCredential构造函数时出现问题。 ApplyClientCredential方法使用实例ClientSecret属性而不是凭据中的Password属性(参见下文)。

public override void ApplyClientCredential(string clientIdentifier, HttpWebRequest request)
{
  if (clientIdentifier == null)
    return;
  if (this.credential != null)
    ErrorUtilities.VerifyHost((string.Equals(this.credential.UserName, clientIdentifier, StringComparison.Ordinal) ? 1 : 0) != 0, "Client identifiers \"{0}\" and \"{1}\" do not match.", (object) this.credential.UserName, (object) clientIdentifier);
  OAuthUtilities.ApplyHttpBasicAuth(request.Headers, clientIdentifier, this.clientSecret);
}

我知道这个问题已经过时了,希望这有助于其他人寻找解决方案。