😊

ASP.NET CoreでWindows認証を有効にする

2023/04/01に公開

プロジェクトテンプレートから作れば有効化されるので、細かいことを気にしてなかったんですが、無効な状態から最低限有効化するのに必要な要素を整理したくなったので、まとめておきます。

まずつぎのNuGetパッケージを追加します。

  • Microsoft.AspNetCore.Authentication.Negotiate

そして起動コード、Program.csでWindows認証と認可サービスを追加し、未認証時(未認可?)のフォールバックポリシーを設定します。

builder.Services
    .AddAuthentication(NegotiateDefaults.AuthenticationScheme)
    .AddNegotiate();

builder.Services.AddAuthorization(options =>
{
    // 未認証時のフォールバックポリシーをデフォルトに設定する。
    options.FallbackPolicy = options.DefaultPolicy;
});

そして同様にProgram.csで、ビルドされたアプリケーションで認証と認可を有効にします。

app.UseAuthentication();
app.UseAuthorization();

UseAuthorizationはすでに有効になっているかもしれませんが、忘れるといけないので書いておきます。

最後にlaunchSettings.jsonでWindows認証と匿名アクセスの設定を変更します。

    "windowsAuthentication": true,
    "anonymousAuthentication": false,

これで設定は完了です。

認証情報を使いたい場合、C#コードなら

var identity = User.Identity;

Razer構文内なら

<p class="nav navbar-text">Hello, @User.Identity?.Name!</p>

こんな感じで利用します。

Discussion