社内で稼働するWebシステムの多くは、統合Windows認証(IWA)を利用しており、Active Directoryの認証情報を使って自動的にログインできるよう設計されています。しかし、特定のPCだけ、あるいは特定のタイミングで認証が突然効かなくなり、ユーザー名とパスワードの入力を求められたり、401エラーが表示されたりすることがあります。こうしたトラブルの原因として、SPN(Service Principal Name)の設定不備が頻繁に挙げられます。本記事では、SPNの基本概念から確認手順、トラブルシューティングまでを順を追って解説します。
【要点】この記事で確認すること
- 最初に見る場所: ブラウザの設定(信頼済みサイト、イントラネットゾーン)、端末の時間同期、イベントビューアーの認証エラー、コマンドプロンプトでのsetspn結果
- 切り分けの軸: 端末側(ブラウザ・OS設定)の問題か、サーバー側(SPN・DNS・Active Directory)の問題か
- 注意点: SPNの変更はドメイン管理者権限が必要であり、一般ユーザーが勝手に変更してはいけません。確認作業は自分で行えますが、修正は必ず管理者に依頼してください。
ADVERTISEMENT
目次
統合Windows認証が効かない原因の全体像
統合Windows認証(旧称NTLM認証またはKerberos認証)は、ブラウザが現在ログオン中のWindowsユーザー資格情報を自動的にサーバーへ送信する仕組みです。この仕組みが動作しない原因は、主に以下の3つに分類されます。
- ブラウザまたはOSの設定不備 – 信頼済みサイトゾーンへの登録漏れ、グループポリシーによる制限、ローカルセキュリティポリシーの変更など
- Kerberos認証に必要な条件不足 – 時間同期のずれ、DNSの不整合、SPNの欠落・重複
- サーバー側の認証設定の問題 – IISの認証方式設定、アプリケーションプールのアカウント相違、委任設定の欠如
このうち、特定のPCだけに発生するケースでは端末側の要因が強く、全社的に発生する場合はサーバー側やActive Directory全体の問題が疑われます。SPNは特にKerberos認証において必須の要素であり、設定ミスが原因で認証がまったく機能しなくなることも珍しくありません。
まず確認すべき端末側の設定
ブラウザのゾーン設定と認証方式
Windows認証を利用する社内Webシステムは、通常「イントラネットゾーン」に属するURLとして扱われます。Internet ExplorerやEdgeでは、下記の手順で設定を確認できます。
- ブラウザの「インターネットオプション」を開き、「セキュリティ」タブを選択します。
- 「ローカルイントラネット」ゾーンをクリックし、「サイト」ボタンを押します。
- 「自動的にイントラネット ネットワークを検出する」にチェックが入っていることを確認します。入っていない場合はチェックしてください。
- 「詳細設定」から、該当するWebシステムのURL(例: *.company.local)が「このWebサイトをゾーンに追加する」リストに含まれているか確認します。
- 「カスタムレベル」から「ユーザー認証」セクションで「自動的に現在のユーザー名とパスワードでログオンする」が選択されていることを確認します。
これらの設定が正しくない場合、認証が自動的に行われず、手動入力や401エラーが発生します。特にグループポリシーで強制されている設定と競合していないか注意してください。
端末の時刻同期
Kerberos認証では、クライアントとサーバーの時刻差が最大5分以内に収まっている必要があります。時刻がずれていると認証チケットが無効とみなされ、NTLMフォールバックが発生するか、直接エラーになります。タスクバーの時刻表示を確認し、同期状態を w32tm /query /status コマンドで確認できます。ずれが大きい場合は、管理者に時刻同期サービス(NTP)の設定確認を依頼してください。
SPN(サービスプリンシパル名)の基本
SPNは、Active Directory内で特定のサービスを一意に識別するための名前です。Kerberos認証では、クライアントが「HTTP/servername.domain.com」のようなSPNを要求し、ドメインコントローラーがそのSPNに対応するサービスアカウントを特定してチケットを発行します。Webサーバー(IIS)の場合は、アプリケーションプールが使用するアカウント(マシンアカウントまたはドメインユーザー)にSPNが登録されている必要があります。
SPNの形式は「サービス名/ホスト名[:ポート]」で、よく使われる例としては「HTTP/srv01.company.local」「HTTP/srv01」「HOST/srv01」などがあります。Kerberos認証を正しく機能させるためには、クライアントがアクセスするURLのホスト名部分と完全一致するSPNが、サービスの実行アカウントに登録されていることが必須です。
SPNの確認手順
以下の手順は、対象のWebサーバーに対して読み取り権限があれば実行可能なもの、またはイベントログから間接的に確認する方法です。なお、setspnコマンド自体は権限が必要ですが、多くの社内環境では一般ユーザーでも参照権限が与えられている場合があります。管理者に依頼する前に、まずは自分のPCで可能な範囲の確認を行ってください。
コマンドプロンプトでの基本確認(管理者権限が必要な場合あり)
- 管理者としてコマンドプロンプトを開きます(Windowsキー→「cmd」右クリック→「管理者として実行」)。
- 次のコマンドで、特定のWebサーバーのSPNを検索します。
setspn -Q HTTP/<サーバーのFQDN>
例:setspn -Q HTTP/srv01.company.local - 同様に、サーバーのNetBIOS名でも検索します。
setspn -Q HTTP/<サーバー名> - 結果が「存在しない場合は登録されていません」と表示されるか、登録されているアカウント名が表示されます。もし複数のアカウントに同じSPNが返ってきた場合は「重複」状態です。
- 重複を確認するには
setspn -Xを実行します。これにより、AD全体で重複しているSPNのリストが表示されます。
これらのコマンドが実行できない場合は、イベントビューアーで認証エラーを確認する方法に切り替えてください。
イベントビューアーからの確認
クライアントPCのイベントビューアーで、Kerberos関連のエラーを確認できます。
- イベントビューアーを開き、「Windowsログ」→「システム」を選択します。
- フィルターで「Kerberos」またはイベントID「4」「11」「29」などを指定します。
- エラーの詳細に「KDCから次のエラーが返されました: KDC_ERR_S_PRINCIPAL_UNKNOWN (7)」などと表示された場合、SPNが正しく解決できていないことを示します。
- 特に「KDC_ERR_S_PRINCIPAL_UNKNOWN」は、要求されたSPNがADに登録されていない、または正しいアカウントに紐づいていないことを意味します。
SPNの問題が疑われるケース(失敗パターン)
| 現象 | 考えられるSPN問題 | 確認すべきポイント |
|---|---|---|
| 特定のPCだけ401エラー | そのPCのDNS設定でサーバーのIPが異なる、または時間同期がずれている | PCの時刻、DNSキャッシュ、ホストファイル |
| 全社的に認証が効かない | サーバーのSPNが欠落・重複・誤ったアカウントに登録されている | setspn -Q と setspn -X の結果 |
| システムによって認証の成功・失敗が異なる | 各システムが使用するサービスアカウントが異なり、一部のSPNだけ正しくない | 各アプリケーションプールのアカウントとSPNの対応 |
| URLにIPアドレスを指定すると認証が通る | DNS名とSPNが一致していない(CNAMEエイリアスを使っている場合) | SPNに登録されているホスト名とURLのホスト名 |
管理者に報告すべき情報
SPNの修正はActive Directoryの管理者しか行えません。自分で確認した以下の情報を整理して報告することで、問題解決がスムーズになります。
- 問題が発生しているWebシステムのURL(例: https://app.company.local/app )
- エラーメッセージの内容(401.1、401.2、認証ダイアログの表示など)
- イベントビューアーで取得したKerberosエラーのスクリーンショット
- setspn -Q および setspn -X の実行結果(可能な場合)
- 問題が発生したPCと発生しなかったPCの違い(OSバージョン、ブラウザ、所属サイトなど)
管理者はこれらの情報をもとに、SPNの追加・削除・重複解消を実施します。例えば、重複があった場合は片方のアカウントからSPNを削除し、正しいアカウントにのみSPNが設定されている状態にします。また、URLにエイリアス(CNAME)を使っている場合は、SPNにエイリアス名も追加する必要があります。
よくある質問(FAQ)
Q1. SPNって何の略ですか?
A. Service Principal Nameの略です。Active Directory上でサービスを一意に識別するための名前です。
Q2. setspnコマンドを実行しても「アクセスが拒否されました」と出ます。
A. 一般ユーザーにはSPNの読み取り権限がない場合があります。その場合はイベントビューアーのログを確認し、管理者に報告してください。
Q3. 同じURLでもあるPCでは認証が通り、別のPCでは通りません。原因は何ですか?
A. クライアント側のブラウザ設定やOSのセキュリティポリシー、DNSキャッシュ、時間同期などが考えられます。まずはPCごとの差異を比較してください。
Q4. システムにIPアドレスでアクセスすると認証が通るのに、ホスト名だと通らないのはなぜですか?
A. SPNはホスト名(FQDNまたはNetBIOS名)で登録されています。IPアドレスではKerberos認証が行われずNTLMにフォールバックするため、設定によっては通ったり通らなかったりします。社内システムは必ずホスト名でアクセスするようにしてください。
Q5. SPNを自分で修正してもいいですか?
A. 絶対にしないでください。SPNの変更はActive Directory全体に影響を与える可能性があります。必ず管理者に依頼してください。
まとめ
社内WebシステムでWindows認証が効かない場合、SPNの設定不備が有力な原因の一つです。まずはブラウザ設定や時間同期など、端末側の基本的な確認を行い、それでも解決しない場合はsetspnコマンドやイベントビューアーのログでSPNの状態を調査します。SPNの変更は管理者のみが行えるため、自分で確認した情報を正確に伝えることが問題解決の近道です。認証方式がKerberosからNTLMにフォールバックしている場合、パフォーマンスやセキュリティ面でも影響が出ることがあるため、早めの対応を心がけましょう。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
