かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

自力Basic認証のやり方

Basic認証の、さらに自力だなんて最後の手段だと思うけどメモ…。とりあえず参考にしたサイト

やったこと

Web.configに以下の記述を追加。

<authentication mode="None" />
<authorization>
  <deny users="?"/>
</authorization>

そして、Global.asaxのAuthenticateRequestで以下のような処理をします。

protected void Application_AuthenticateRequest()
{
    if (string.IsNullOrEmpty(this.Request.Headers["Authorization"]))
    {
        // Basic認証だよ!っていう情報を返しておく
        this.Response.StatusCode = 401;
        this.Response.SubStatusCode = 1;
        this.Response.AppendHeader("WWW-Authenticate", "Basic");
        this.CompleteRequest();
        return;
    }
            
    // とりあえず、なんか認証情報きてたら認証OKってことにしとく。
    // 本当は参考URLの方法でユーザーIDとパスワードをとってきちんと認証しようね!
    Debug.WriteLine(this.Request.Headers["Authorization"]);
    HttpContext.Current.User = new GenericPrincipal(new GenericIdentity("user"), new[] { "Users" });
}

使いたい製品が基本認証以外をサポートしてるんなら、ほかの方法にするのがいいんだけどね…。