Überblick
以下の記事でL4ロードバランサー + SSL終端環境で、IISにおける統合Windows認証(Integrated Windows Authentication, IWA)を構成する方法を解説しました。

この方法を構成する際にSPN(Service Principal Name)の設定ミスや重複により認証が失敗するケースが多々あります。
本記事では、SPNの登録や必要な作業を網羅的に解説します。
本記事での構成例
[Client Browser]
|
| HTTPS Access
v
[L4 Load Balancer (TCP 443)]
| |
v v
[Server1 (IIS)] [Server2 (IIS)]
- FQDN:
sso.chat-messenger.com
- IISのホスト名:
Server1
,Server2
- 共有サービスアカウント:
CAMTEST\cam-svc
問題点:SPN重複エラー
統合Windows認証では、クライアントがアクセス先のFQDNに対してSPNを検索し、該当するサービスアカウントに対してKerberosチケットを取得します。
setspn -S HTTP/sso.chat-messenger.com Server1$
setspn -S HTTP/sso.chat-messenger.com Server2$
上記のように、同一FQDN (sso.chat-messenger.com
) を異なるホスト(Server1, Server2)に対してSPN登録すると、次のようなエラーが発生:
Duplicate SPN found, aborting operation.
解決方法:SPNを共有サービスアカウントに登録
複数ホストで同一FQDNを使う場合、SPNは共有サービスアカウントに1つだけ登録する必要があります。
共有サービスアカウントの作成
IIS のアプリケーションプールで動作させるサービスアカウントは、ドメインユーザーであれば可能ですが(Domain Users に属していればOK)、通常ユーザーとサービスアカウントを分離し、誤操作やパスワードポリシーの適用範囲を明確にするため、OU=ServiceAccounts
のように、OUを Users
と区別してActive Directory ドメインコントローラーで、cam-svc
を作成します。

サービスアカウントでSPN登録
上記で作成したサービスアカウントでSPN登録を行います。
setspn -S HTTP/sso.chat-messenger.com CAMTEST\cam-svc
・ドメインに参加している任意の端末でOK。ただし、ドメイン管理者権限が必要です。
・HTTPS通信においてもSPNはHTTP/ホスト名
の形式で登録する必要があります。
IISアプリケーションプールの設定
Server1
, Server2
両サーバのアプリケーションプールの実行ユーザーを、作成したサービスアカウント CAMTEST\cam-svc
に設定

IISマネージャーの「構成エディター」
IISアプリケーションプールをサービスアカウントに変更し、Windows認証を正しくKerberosで動作させるためには、IISマネージャーの「構成エディター」機能で次の設定を行う必要があります:
system.webServer/security/authentication/windowsAuthentication
セクションuseAppPoolCredentials
vonTrue
に設定useKernelMode
vonFalse
に設定

共有サービスアカウントに「バッチ ジョブとしてログオン」権限の設定
アプリケーションプールは Web リクエストに応じて w3wp.exe
(ワーカープロセス)を起動する。この際、共有サービスアカウントで実行する場合、「バッチ ジョブとしてログオン」権限がないとプロセスの起動が拒否され、HTTP 503 エラーになるため、. 共有サービスアカウントに「バッチ ジョブとしてログオン」権限の設定(GPOベース)が必要です。
以降の設定は各IIS端末のローカルセキュリティポリシーでも制御可能ですが、Active Directory ドメインコントローラー上のGPO(グループポリシーオブジェクト)で、組織ポリシーで制限が掛かっている場合があります。 その場合は GPO 自体で制御が必要で、その方法を解説しています。
OU=ServiceAccounts に GPO をリンクする手順
サービスアカウントCAMTEST\cam-svc
vonOU=ServiceAccounts
に作成した場合、
このOUにグループポリシー(例:IIS-BatchLogon-GPO)をリンクしなければ、cam-svc
にポリシーが適用されません。GPOは「どのOUにリンクされているか」によって適用対象が決まるため、アカウントの存在場所とGPOのリンク先を一致させることが重要です。
gpmc.msc
を実行し、「グループポリシー管理エディタ」を起動- 左ペインで
camtest.com/ServiceAccounts
OU を右クリック → 「このドメインに GPO を作成し、このコンテナーにリンクする」→ 任意の名前を入力(例IIS-BatchLogon-GPO
) - 作成した
IIS-BatchLogon-GPO
で編集 - コンピュータの構成 → Windows の設定 → セキュリティの設定 → ローカル ポリシー → ユーザー権利の割り当て→ バッチ ジョブとしてログオン(Log on as a batch job)
- ダブルクリックしてダイアログを開き、
CAMTEST\cam-svc
ユーザを追加





GPO設定の反映について
GPOの適用を正しく反映させるには、対象の IIS サーバ上で gpupdate /force
を実行することが重要です。これにより、GPOの設定が即座に有効になります。特に「バッチ ジョブとしてログオン」権限を付与する際には、ポリシーの反映が遅れると w3wp.exe
の起動失敗につながることがあります。