😎
Blazor(Server)でWindows認証を実装する
やりたいこと
- Blazor(Server)でWindows認証を使用したい。
- AzureADではなくオンプレのADサーバを利用したい。
前提
ひとまずAzure上にVMを二つ作ることにする。
- ADServer用
- Blazorを展開するIIS用
そのためAzureが利用できることを前提とする。
- WindowsServer2019
- .Net 8 ASP.netCore Blazor (Server)
- VisualStudio 2022 preview
作業手順
以下の手順に従う。
VMの用意
ADServer側
-
Azureポータルの「リソースの作成」からWindowsServerを検索


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

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

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

-
RDPで接続

IIS側
基本的にはADServerと同じ。
- 仮想ネットワークをADServerと同じものを選択する。
- 受信ポートにHTTP,HTTPSを設定する。
ADServerのインストール~ドメイン参加
この手順についてはこちらを参考いただいた方が有用。
ADServer側
-
ADServerインストール


基本的には全部OKで問題ない(はず)。 -
ドメインコントローラーに昇格

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

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

なんか警告出てるけど無視して問題ないのかな?
- テストユーザー追加


IIS側
- DNSをADServer側のIPに設定

VMの再起動が必要?
- ドメインに参加



. IISのインストール

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

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

-
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();
- アプリを発行
アプリをIISへ展開
IIS側のVMで以下の手順を行う。
- hostingBundleをインストール
- https://dotnet.microsoft.com/en-us/download/dotnet/8.0
- https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-aspnetcore-8.0.6-windows-hosting-bundle-installer
- IISManagerを開く
アプリケーションプールを追加


アンマネージドコードさえ設定していればあとは適当?
サイトを追加する


Windows認証を有効に


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

これ余計なファイルも含まれてる?
これで完成
動作確認
- アクセス時にログインが必須となる。

ログアウトの実装はできない?
即予算オーバー。

おわり。
参考サイト
Discussion