【问题标题】:How do I pass credentials with DalSoft.RestClient?如何使用 DalSoft.RestClient 传递凭据?
【发布时间】:2016-11-07 22:53:54
【问题描述】:

我正在尝试使用 DalSoft.RestClient 对需要提供网络凭据(对于我的用例为默认凭据)的内部服务进行安静的调用。

RestClient 的构造函数提供了一个重载以传入 IHttpClientWrapper,我可以实现处理凭据,但我希望有一个开箱即用的解决方案可以将凭据传递给 RestClient

如何将凭据传递给DalSoft.RestClient

【问题讨论】:

    标签: c# credentials networkcredentials dalsoft.restclient


    【解决方案1】:

    对于通过标头设置的任何凭据,例如 basic 或 oauth,您可以使用 Headers 方法。 oauth2 不记名令牌示例:

    dynamic client = new RestClient("http://localhost/");
    client
       .Headers(new { Authorization = "Bearer " + bearerToken })
       .MyResource
       .Get();
    

    如果您目前正在谈论 kerberos 或 ntlm,则没有方法可以执行此操作,但正如您建议的那样,您可以实现 IHttpClientWrapper 来执行此操作。奇怪的是,凭证是使用 HttpClientHandler 传递给 HttpClient 的。以下是如何执行此操作的示例:

    HttpClientHandler handler = new HttpClientHandler();
    handler.Credentials = new NetworkCredential();
    HttpClient client = new HttpClient(handler);
    

    我意识到实现 IHttpClientWrapper 只是为了做到这一点并不理想,所以如果你需要这个功能,我会考虑将它添加到 ctor 中。它看起来像这样:

    HttpClientHandler handler = new HttpClientHandler();
    handler.Credentials = new NetworkCredential();
    new RestClient("http://localhost/", new Config(handler)); 
    

    从 3.0 开始更新现在支持

    【讨论】:

    • 感谢您阅读我对 Kerberos 和 NTLM 的看法,因为是的,这就是我说网络凭据时的意思。如果这是通过使用带有身份验证信息的 HttpHandler 构造 RestClient 来处理的,那就太好了。我创建了一个issue on GitHub 来请求添加此功能,如上所述。
    • 感谢@ahsteele 我已经实现了这个功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多