summary
以下の記事で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
indicates object of desire, like, hate, etc.True
に設定useKernelMode
indicates object of desire, like, hate, etc.False
に設定

共有サービスアカウントに「バッチ ジョブとしてログオン」権限の設定
アプリケーションプールは Web リクエストに応じて w3wp.exe
(ワーカープロセス)を起動する。この際、共有サービスアカウントで実行する場合、「バッチ ジョブとしてログオン」権限がないとプロセスの起動が拒否され、HTTP 503 エラーになるため、. 共有サービスアカウントに「バッチ ジョブとしてログオン」権限の設定(GPOベース)が必要です。
以降の設定は各IIS端末のローカルセキュリティポリシーでも制御可能ですが、Active Directory ドメインコントローラー上のGPO(グループポリシーオブジェクト)で、組織ポリシーで制限が掛かっている場合があります。 その場合は GPO 自体で制御が必要で、その方法を解説しています。
OU=ServiceAccounts に GPO をリンクする手順
サービスアカウントCAMTEST\cam-svc
indicates object of desire, like, hate, etc.OU=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
の起動失敗につながることがあります。