IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド
はじめに
本記事では、Windows Server 2012 R2上で稼働するIIS Webサイトに対し、透過的なSSO(シングルサインオン)として機能するKerberosドメインユーザー認証を構成する手順を、順を追って解説します。
1. IISマネージャーでWindows認証を有効化する
WebサーバーでIISマネージャーを起動し、対象のWebサイトを選択して「認証」セクションを開きます。デフォルトでは匿名認証のみが有効になっています。IISは常に最初に匿名認証を試行するため、これを無効化し、Windows認証を有効にします。

認証プロバイダーの確認
Windows認証で利用可能なプロバイダーの一覧を開きます。デフォルトではNegotiateとNTLMの2つが存在します。Negotiateはコンテナー的な役割を持つプロバイダーで、まずKerberosによる認証を試み、失敗した場合はNTLMへフォールバックします。Negotiateがプロバイダーリストの先頭にあることが重要なポイントです。

2. SPN(サービスプリンシパル名)の登録
次に、ユーザーがアクセスするWebサイト名に対してSPN(Service Principal Name)エントリを登録します。
- IISサイトがサーバー自身のホスト名でのみアクセスされる場合(例:https://server-name や https://server-name.adatum.loc)、追加のSPN登録は不要です(Active Directoryのサーバーアカウントに既にSPNが存在するため)。
- サイトのアドレスがホスト名と異なる場合や、ロードバランサーを用いたWebファームを構築する場合は、サーバーアカウントまたはユーザーアカウントに対して追加のSPNを紐付ける必要があります。
専用サービスアカウントの作成とSPN登録
ここでは、複数台のIISサーバーからなるWebファームを想定します。このケースでは、専用のADアカウントを作成し、そこへSPNを紐付けるのがベストプラクティスです。Webサイトのアプリケーションプールは、このアカウントで実行されます。
まず、ドメインアカウントiis_serviceを作成し、このオブジェクトにSPNが割り当てられていないこと(servicePrincipalName属性が空であること)を確認します。

Webサイトがhttps://webportal および https://webportal.adatum.loc で応答するものとします。これらのアドレスを、サービスアカウントのSPN属性に登録します。
setspn /s HTTP/webportal adatum\iis_service
setspn /s HTTP/webportal.adatum.loc adatum\iis_service

これにより、ユーザーがこれらのURLへアクセスした際に、このアカウントがKerberosチケットを復号化し、セッションを認証できるようになります。
アカウントのSPN設定は、以下のコマンドで確認できます。
setspn -l iis_service

ヒント:同じSPNが複数のドメインオブジェクトで使用されていると、Kerberosは正しく動作しません。次のコマンドで、ドメイン内に重複するSPNがないことを確認しておきましょう。setspn -x
3. アプリケーションプールの実行アカウントを変更する
続いて、先ほど作成したアカウントでアプリケーションプールが起動するように構成します。
対象Webサイトのアプリケーションプールを選択します(本例ではDefaultAppPool)。

「詳細設定」を開き、「ID」項目へ移動します。

「ApplicationPoolIdentity」から「adatum\iis_service」へ変更します。

4. useAppPoolCredentialsの設定
IISマネージャーで対象サイトを選択し、「構成エディター」を開きます。
セクションのドロップダウンから、system.webServer > security > authentication > windowsAuthentication を選択します。

useAppPoolCredentialsをTrueに変更します。
この設定により、IISはクライアントから送信されたKerberosチケットの復号化に、アプリケーションプールのドメインアカウントを使用できるようになります。
5. IISの再起動とファーム全体への適用
以下のコマンドでIISを再起動します。
iisreset

Webファームを構成している場合は、すべてのサーバーで同じ設定を行う必要があります。
6. Kerberos認証のテスト
クライアントのブラウザーで https://webportal.adatum.loc を開き、認証ダイアログが表示されずに自動ログオンできれば成功です。
注意:筆者の環境では、IE11で即座に認証できませんでした。この場合、対象アドレスを「信頼済みサイト」のリストに追加し、インターネットオプションの「セキュリティ → 信頼済みサイト → ユーザー認証 → ログオン」で「現在のユーザー名とパスワードで自動的にログオンする」を指定する必要がありました。

FiddlerでKerberosチケットを確認する
Webサイトで実際にKerberos認証が使用されているかは、FiddlerなどのHTTPトラフィック監視ツールを使えば確認できます。
Fiddlerを起動し、ブラウザーで対象サイトを開きます。ウィンドウ左側の一覧からサイトへのアクセス行を選び、右側の「Inspectors」タブを表示します。「Authorization Header (Negotiate) appears to contain a Kerberos ticket」という表示が出ていれば、IISサイトへの認証にKerberosが使用されたことを意味します。

-
高性能なNGINX+PHP-FPM Webサーバーの構築と最適化ガイド(CentOS 7)
PHP-FPM(FastCGI Process Manager)は、PHPスクリプトを実行するためのFastCGI実装の一つです。静的コンテンツの処理に優れたNGINXとPHP-FPMを組み合わせることで、LAMPスタック(Apache + mod_php)よりも高速で高性能なWebサーバーを構築できます。LEMPは、WebサイトのホスティングやWebアプリケーションの公開のために一般的に一緒に導入されるオープンソースソフトウェア群を指す略語です。それぞれLinux(OS)、Nginx(より一般的なLAMPスタックにおけるApacheの代替となるWebサーバー)、MySQL/MariaDB(デ
-
【Linux】mdadmでソフトウェアRAIDを構築・管理する完全ガイド
mdadm(multiple disks admin)は、Linux上でソフトウェアRAIDを作成・管理するための標準的なツールです。本記事では、mdadmを使用してRAIDアレイを構築する方法、ディスクの追加・管理、ホットスペアの設定、障害発生時の復旧手順まで、実例とともに詳しく解説します。 mdadmのインストール方法 まずは使用しているディストリビューションに応じて、以下のコマンドでmdadmをインストールします。 CentOS / Red Hat系(yum/dnf):yum install mdadm Ubuntu / Debian系:apt-get install mdadm イ