😎

Blazor(Server)でWindows認証を実装する

2024/06/21に公開

やりたいこと

  • Blazor(Server)でWindows認証を使用したい。
  • AzureADではなくオンプレのADサーバを利用したい。

前提

ひとまずAzure上にVMを二つ作ることにする。

  • ADServer用
  • Blazorを展開するIIS用

そのためAzureが利用できることを前提とする。

  • WindowsServer2019
  • .Net 8 ASP.netCore Blazor (Server)
  • VisualStudio 2022 preview

作業手順

以下の手順に従う。

VMの用意

ADServer側

  1. Azureポータルの「リソースの作成」からWindowsServerを検索

  2. [Windows Server]を選択し、好きなプランを選択して作成する(今回は[smalldisk]Windows Server 2019 Datacenterを選択した)

  3. リソースグループ、仮想マシン名など任意のものを設定

  4. 仮想ネットワークも適当に。ひとまずRDPで接続できるように。

  5. RDPで接続

IIS側

基本的にはADServerと同じ。

  • 仮想ネットワークをADServerと同じものを選択する。
  • 受信ポートにHTTP,HTTPSを設定する。

ADServerのインストール~ドメイン参加

この手順についてはこちらを参考いただいた方が有用。
https://qiita.com/onishi_820/items/02a66c370d6ad218794b

ADServer側

  1. ADServerインストール


    基本的には全部OKで問題ない(はず)。

  2. ドメインコントローラーに昇格

  3. フォレストの追加をする。(ひとまずadtest.comとする)

    パスワードを設定したらあとは全部OKでインストール

なんか警告出てるけど無視して問題ないのかな?

  1. テストユーザー追加


IIS側

  1. DNSをADServer側のIPに設定

VMの再起動が必要?

  1. ドメインに参加

. IISのインストール

Windows認証にチェックを入れる。

Windows認証用Blazorアプリの作成

プログラムは以下

https://github.com/thakaz/WindowsAuthTestForBlazor

  1. 新規で「Blazor Web App」プロジェクトを作成する。とりあえず以下の設定。
  • フレームワーク :.Net8.0
  • 認証の種類 : なし
  • Interactive render mode : Server(Global)
  1. 必要なパッケージのインストール

  2. Program.csに以下を追加

var builder = WebApplication.CreateBuilder(args);
+ builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
+ builder.Services.AddAuthorization(options =>{options.FallbackPolicy=options.DefaultPolicy;});

+ app.UseAuthentication();
+ app.UseAuthorization();
  1. アプリを発行

アプリをIISへ展開

IIS側のVMで以下の手順を行う。

  1. hostingBundleをインストール
  1. IISManagerを開く

アプリケーションプールを追加

アンマネージドコードさえ設定していればあとは適当?

サイトを追加する

Windows認証を有効に

発行したアプリをフォルダへ配置

これ余計なファイルも含まれてる?

これで完成

動作確認

  • アクセス時にログインが必須となる。

ログアウトの実装はできない?


即予算オーバー。

おわり。

参考サイト

https://qiita.com/onishi_820/items/02a66c370d6ad218794b

Discussion