Windows 2022
Sponsored Link

IIS : Windows 認証を設定する
2022/01/26
 
Windows認証を設定して、ある Web サイト配下の特定のパスに対して認証を要求するように設定します。
基本認証と異なる点は、 基本認証はアクセス時に必ず認証フォームが表示されてユーザー認証をする必要があります。
対して、Windows 認証の場合は、アクセス時に Windows クライアントからのアクセス時のみ、現在 Windows にログオンしているユーザー情報が Web ブラウザーから IIS サーバーに自動的に送信され、認証が行われます。
よって、IIS サーバーとアクセスする Windows クライアントの双方が Windows AD ドメイン環境配下に存在している場合は、 Windows クライアントからのアクセス時に、手動でのユーザー情報の入力をする必要がなくアクセスすることができます。
また、アクセスする Windows クライアントがドメイン環境外に存在していたとしても、もし、アクセス元の Windows クライアント上に、IIS サーバー側に存在するユーザーアカウントと同名のユーザーアカウントで 且つ 同じパスワードを持ったローカルユーザーアカウントが存在し、 且つ、Web ブラウザーのセキュリティ設定で、アクセス先の IIS サイトを安全なサイトとして登録している場合、という条件下に限っても、手動でのユーザー情報の入力をする必要がなくアクセスすることができます。
上記のようにアクセス元が Windows 且つ 条件を満たす場合以外のアクセスは全て、基本認証と同様にユーザー認証フォームが表示され、 都度、手動入力でのユーザー認証を行うという挙動になります。
[1] PowerShell を管理者権限で起動して設定します。
例として [RX-7.srv.world] サイトの物理パス直下に [auth_win] フォルダーを作成して [auth_win] フォルダー配下は Windows 認証を要求するよう設定します。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

# Windows 認証の機能をインストール
PS C:\Users\Administrator> Install-WindowsFeature Web-Windows-Auth 

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {Windows Authentication}

# IIS 再起動
PS C:\Users\Administrator> Restart-Service W3SVC 

PS C:\Users\Administrator> Get-Website 

Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    %SystemDrive%\inetpub\wwwroot  http *:80:
RX-7.srv.world   2    Started    C:\inetpub\newsite             http *:80:rx-7.srv.world
                                                                https *:443:rx-7.srv.world sslFlags=0

# [auth_win] フォルダー作成
PS C:\Users\Administrator> New-Item -ItemType Directory -Path "IIS:\Sites\RX-7.srv.world\auth_win" 

    Directory: WebAdministration::\\RX-7\Sites\RX-7.srv.world

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         1/24/2022  11:21 PM                auth_win

# 匿名認証を無効化
PS C:\Users\Administrator> Set-WebConfigurationProperty -Filter '/system.webServer/security/authentication/anonymousAuthentication' -Location "RX-7.srv.world/auth_win" -Name enabled -Value False 

# Windows 認証を有効化
PS C:\Users\Administrator> Set-WebConfigurationProperty -Filter '/system.webServer/security/authentication/windowsAuthentication' -Location "RX-7.srv.world/auth_win" -Name enabled -Value True 

# Web サイト再起動
PS C:\Users\Administrator> Restart-WebItem -PSPath 'IIS:\Sites\RX-7.srv.world' 

# テストページ作成
PS C:\Users\Administrator> Write-Output "Windows Authentication Test Page" | Out-File C:\inetpub\newsite\auth_win\index.html -Encoding Default 

# アクセスして動作確認 ⇒ [-u (ユーザー名)]
# 冒頭に記載の条件下以外でのアクセスは全て手動でのユーザー認証が必要
PS C:\Users\Administrator> curl.exe --ntlm -u Serverworld https://rx-7.srv.world/auth_win/ 
Enter host password for user 'Serverworld':     # ユーザーのパスワード
Windows Authentication Test Page
IIS : Windows 認証を設定する (GUI)
 
GUI で設定する場合は以下のように実行します。
[2] [サーバーマネージャー] - [役割と機能の追加] から [Web サーバー (IIS)] の機能で、以下のように [Windows 認証] を選択してチェックを入れます。
[3] インストール後は IIS を再起動しておきます。
[4]
事前に Windows 認証を設定したいサイトのパスにフォルダーを追加しておきます。
当例では [auth_win] フォルダーを作成して進めます。該当フォルダーにはアクセスするユーザーの NTFS 読み取り権限も必要です。
[スタート] - [サーバーマネージャー] から [ツール] - [インターネット インフォメーション サービス マネージャー] を起動し、左ペインで、設定したいサイト配下の、Windows 認証用に事前作成したフォルダーを選択し、中央ペインで [認証] を開きます。
[5] 以下のように [匿名認証] を無効にし、[Windows 認証] を有効にします。
[6] Windows 認証を設定したフォルダー配下にテストページを作成して動作確認します。
冒頭に記載した条件下以外からのアクセスの場合は、以下のように手動でのユーザー情報の入力が求められます。 特定の条件下からのアクセスの場合のみ、認証は自動で行われ、以下のような認証フォームは表示されず、次の [7] のアクセス先サイトへの表示に移ります。
[7] 自動 または 手動での認証が正常に完了して、テストページが正常に応答すれば OK です。
関連コンテンツ