Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

はじめに

本記事では、Windows Server 2012 R2上で稼働するIIS Webサイトに対し、透過的なSSO(シングルサインオン)として機能するKerberosドメインユーザー認証を構成する手順を、順を追って解説します。

1. IISマネージャーでWindows認証を有効化する

WebサーバーでIISマネージャーを起動し、対象のWebサイトを選択して「認証」セクションを開きます。デフォルトでは匿名認証のみが有効になっています。IISは常に最初に匿名認証を試行するため、これを無効化し、Windows認証を有効にします。

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

認証プロバイダーの確認

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

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

2. SPN(サービスプリンシパル名)の登録

次に、ユーザーがアクセスするWebサイト名に対してSPN(Service Principal Name)エントリを登録します。

  • IISサイトがサーバー自身のホスト名でのみアクセスされる場合(例:https://server-namehttps://server-name.adatum.loc)、追加のSPN登録は不要です(Active Directoryのサーバーアカウントに既にSPNが存在するため)。
  • サイトのアドレスがホスト名と異なる場合や、ロードバランサーを用いたWebファームを構築する場合は、サーバーアカウントまたはユーザーアカウントに対して追加のSPNを紐付ける必要があります。

専用サービスアカウントの作成とSPN登録

ここでは、複数台のIISサーバーからなるWebファームを想定します。このケースでは、専用のADアカウントを作成し、そこへSPNを紐付けるのがベストプラクティスです。Webサイトのアプリケーションプールは、このアカウントで実行されます。

まず、ドメインアカウントiis_serviceを作成し、このオブジェクトにSPNが割り当てられていないこと(servicePrincipalName属性が空であること)を確認します。

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

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

setspn /s HTTP/webportal adatum\iis_service
setspn /s HTTP/webportal.adatum.loc adatum\iis_service

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

これにより、ユーザーがこれらのURLへアクセスした際に、このアカウントがKerberosチケットを復号化し、セッションを認証できるようになります。

アカウントのSPN設定は、以下のコマンドで確認できます。

setspn -l iis_service

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

ヒント:同じSPNが複数のドメインオブジェクトで使用されていると、Kerberosは正しく動作しません。次のコマンドで、ドメイン内に重複するSPNがないことを確認しておきましょう。
setspn -x

3. アプリケーションプールの実行アカウントを変更する

続いて、先ほど作成したアカウントでアプリケーションプールが起動するように構成します。

対象Webサイトのアプリケーションプールを選択します(本例ではDefaultAppPool)。

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

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

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

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

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

4. useAppPoolCredentialsの設定

IISマネージャーで対象サイトを選択し、「構成エディター」を開きます。

セクションのドロップダウンから、system.webServer > security > authentication > windowsAuthentication を選択します。

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

useAppPoolCredentialsTrueに変更します。

この設定により、IISはクライアントから送信されたKerberosチケットの復号化に、アプリケーションプールのドメインアカウントを使用できるようになります。

5. IISの再起動とファーム全体への適用

以下のコマンドでIISを再起動します。

iisreset

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

Webファームを構成している場合は、すべてのサーバーで同じ設定を行う必要があります。

6. Kerberos認証のテスト

クライアントのブラウザーで https://webportal.adatum.loc を開き、認証ダイアログが表示されずに自動ログオンできれば成功です。

注意:筆者の環境では、IE11で即座に認証できませんでした。この場合、対象アドレスを「信頼済みサイト」のリストに追加し、インターネットオプションの「セキュリティ → 信頼済みサイト → ユーザー認証 → ログオン」で「現在のユーザー名とパスワードで自動的にログオンする」を指定する必要がありました。

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

FiddlerでKerberosチケットを確認する

Webサイトで実際にKerberos認証が使用されているかは、FiddlerなどのHTTPトラフィック監視ツールを使えば確認できます。

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

IIS WebサイトでKerberos認証(透過的SSO)を構成する手順ガイド

  1. 高性能な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(デ

  2. 【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 イ