C# HttpClientでBasic認証する

今回はHttpClientでBasic認証を行います。

Basic認証するユーザ名とパスワードをコロン":“でつないでBase64形式にエンコーディングして、その値をAuthorizationヘッダに詰めればOKです。

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

// Basic認証するユーザ名とパスワード
var userName = "ohke";
var userPassword = "ohkepassword";

// リクエストの生成
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("http://ohke.hateblo.jp/")
};

// Basic認証ヘッダを付与する
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(
    "Basic",
    Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", userName, userPassword))));

// リクエストの送信
using (var httpClient = new HttpClient())
{
    var response = await httpClient.SendAsync(request);
}

試しにこのブログにリクエストを飛ばして、wiresharkでリクエストパケットをキャプチャしてみますと、Authorizationに設定したユーザ名・パスワードが送られていることが確認できます。

f:id:ohke:20170520155308p:plain:w500