かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

自力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" });
}

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