😎
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