Kerberos 構成の既知の問題 (SharePoint Server 2010)

 

適用先: SharePoint Server 2010

トピックの最終更新日: 2016-11-30

Kerberos 認証と既定以外のポート

一部の Kerberos クライアント (.NET Framework、Internet Explorer 7 および 8 を含む) が、不適切なサービス プリンシパル名を生成するという既知の問題があります。これは、既定以外のポート (80、443 以外のポート) で構成された Kerberos 対応 Web アプリケーションでの認証を試行したときに発生します。問題の原因は、(TGS 要求の Sname のように) ポート番号なしで指定した場合、クライアントは TGS 要求内で SPN を適切に作成しないということです。

例:

Web アプリケーションが http://intranet.contoso.com:1234 で実行中の場合、クライアントは http/intranet.contoso.com:1234 ではなく http/intranet.contoso.com に等しい SPN を持つサービスのチケットを要求します。

問題に関する詳細情報は次の記事で確認できます。

この問題を回避するには、ポート番号を付けた状態と付けない状態の両方で SPN を登録します。

  • http/intranet

  • http/intranet.contoso.com

  • http/intranet:12345

  • http/intranet.contoso.com:12345

この問題が今後の Service Pack あるいは修正プログラムで解決した場合に、回避策を使用しているアプリケーションが引き続き確実に機能するように、既定以外のポートを登録することを推奨します。

この回避策は、以下の条件が当てはまる場合は、機能しないことに注意してください。

  • 既定以外のポートで実行中の複数の Web アプリケーションがある場合

  • Web アプリケーションが、サーバーのホスト名、あるいは (異なるポートの) 同じホスト ヘッダーにバインドされている場合

  • Web アプリケーション IIS アプリケーション プールが異なるサービス アカウントを使用している場合

これらの条件が当てはまる場合は、この回避策の推奨事項に従うと、重複する SPN が異なるサービス アカウントに登録され、Kerberos 認証が破損します。

複数のポートで実行中の、共通のホスト名を共有する複数の Web サイトがあり、Web アプリケーションで異なる IIS アプリケーション プール ID を使用している場合、Web サイトのすべてでは Kerberos 認証を使用できません (1 つのアプリケーションは Kerberos を使用できますが、残りのアプリケーションは別の認証プロトコルを必要とします)。このシナリオのすべてのアプリケーションで Kerberos を使用するには、以下のどちらかを実行する必要があります。

  1. 1 つの共有サービス アカウントですべての Web アプリケーションを実行する

  2. 各サイトをそれ自身のホスト ヘッダーで実行する

Kerberos 認証と DNS CNAME

一部の Kerberos クライアント (Internet Explorer 7 および 8 を含む) が、A レコードではなく DNS CNAME を使用して解決するように構成された Kerberos 対応サービスでの認証を試行したときに発生する、既知の問題があります。問題の原因は、クライアントがエイリアス名 (CNAME) ではなくホスト名 (A レコード) を使用することにより、TGS 要求内で SPN を適切に作成しないということです。

例:

A レコード: wfe01.contoso.com

CNAME: intranet.contoso.com (wfe01.contoso.com のエイリアス)

クライアントが http://intranet.contoso.com に認証するように試行した場合は、クライアントは適切に SPN を作成せず、http/intranet.contoso.com ではなく http/wfe01.contoso.com の Kerberos チケットを要求します

問題に関する詳細情報は次の記事で確認できます。

https://support.microsoft.com/kb/911149/ja-jp

https://support.microsoft.com/kb/938305/ja-jp

これを回避するには、CNAME エイリアスではなく DNS A レコードを使用して、Kerberos 対応のサービスを構成します。KB 記事で説明される修正プログラムは Internet Explorer でのこの問題を修正しますが、(Microsoft Office SharePoint Server が Web サービス通信で使用する) .NET Framework での問題は修正しません。

Kerberos 認証とカーネル モード認証

注意

カーネル モード認証は SharePoint 2010 製品ではサポートされません。このセクションは情報提供のみを目的としています。

IIS Version 7.0 から、カーネル モード認証と呼ばれる新しい認証機能が導入されました。IIS Web サイトがカーネル モード認証を使用するように構成されたとき、HTTP.sys はアプリケーション プールのワーカー プロセスではなくクライアントの要求を認証します。HTTP.sys はカーネル モードで実行されることから、これによりパフォーマンスは良くなりますが、Kerberos を構成するときは複雑になります。これは、HTTP.sys がワーカー プロセスの ID ではなく、コンピューターの ID で実行されることによるものです。HTTP.sys が Kerberos チケットを受信したとき、既定で、ワーカー プロセスが実行中の ID のキーではなく、サーバーの暗号化キー (秘密キー) を使用してチケットの復号化を試行します。

単一の Web サーバーがカーネル モード認証を使用するように構成されている場合は、サーバーがドメインに追加されるとき、自動的に HOST SPN を登録することから、Kerberos は追加の構成や追加の SPN なしで機能します。複数の Web サーバーでロード バランスされている場合、既定のカーネル モード認証構成は機能しないか、あるいは少なくとも断続的に障害が発生します。これは、クライアントが TGS 要求で受信したサービス チケットが、要求を認証するサーバーで機能すると保証できないからです。

この問題を回避するには、以下の操作を行うことができます。

Kerberos 認証とセッションベースの認証

IIS 7.0 以降で Kerberos 認証を使用するとき、認証トラフィックが増加することがあります。これは、特に以下の IIS での Windows 認証設定に起因することがあります。

AuthPersistNonNTLM

オプションのブール値の属性。

同じ接続上のものを含め、IIS が自動的にすべての非 NTLM 要求 (たとえば、Kerberos) を、再度、認証するかどうかを指定します。True にすると、同じ接続での複数の認証を有効にします。

既定は False です。

注意

False に設定すると、同じ接続でクライアントは 1 度だけ認証されます。IIS は、接続が維持される TCP セッションのサーバーでトークンあるいはチケットをキャッシュします。

authPersistSingleRequest

オプションのブール値の属性。

このフラグを True に設定すると、接続上の単一の要求についてのみ認証を保持することを指定します。IIS は、各要求の最後で、認証をリセットし、セッションの次の要求で再認証を強制します。

既定値は False です。

IIS 7.0 での認証永続性を構成する方法の説明については、「IIS 7. 0 で、Kerberos 認証プロトコルと共に統合 Windows 認証を使用するときにパフォーマンスが低下を発生する可能性が」と「Implementing Access Control (英語)」を参照してください。

Kerberos 認証と重複あるいは欠けている SPN の問題

Kerberos 認証を構成する際、意図せずに重複したサービス プリンシパル名を構成することがあります。これは、特に、SPN を作成する際に SetSPN -A あるいは ADSI エディター ツール (adsiedit.msc) を使用したときに発生します。一般的な推奨事項は、SPN を作成するときに SetSPN -S を使用することです。-S スイッチは、指定された SPN を作成する前に、重複 SPN がないか確認します。

使用中の環境で重複 SPN がある可能性がある場合は、SetSPN -X コマンドを使用して、すべての重複 SPN についてクエリします (Windows 2008 以降のみ)。SPN が返された場合は、それらの SPN がなぜ登録されたか調べ、重複する不要な SPN を削除する必要があります。2 つの異なる ID で実行中の 2 つのサービスがあり、両方が同じ SPN を使用している (重複 SPN 問題) 場合、それらのサービスの 1 つを、異なる SPN を使用するか、共通のサービス ID を共有するように再構成する必要があります。

SPN が登録されていないか、必要な書式で登録されていない可能性がある場合は、SetSPN -Q <insert SPN> を使用して、特定の SPN が存在するかクエリできます。

Kerberos の最大トークン サイズ

一部の環境では、ユーザーは多くの Active Directory グループのメンバーであることがあり、その場合はそれらのユーザーの Kerberos チケットのサイズが増加することがあります。チケットが大きくなりすぎた場合は、Kerberos 認証が失敗することがあります。最大トークン サイズを調整する方法の詳細については、「ユーザーが多数のグループに属している場合、Kerberos 認証の問題の新しい解決」(http: //support.microsoft.com/kb/327825) を参照してください。

注意

最大トークン サイズを調整するとき、レジストリ設定の最大値を超える最大トークン サイズを構成した場合は、Kerberos 認証エラーが表示されることがある点に注意してください。最大トークン サイズは、10 進数で 65535、16 進数で FFFF を超えないようにすることを推奨します。

Windows Server 2008 と Windows Vista の Kerberos 認証修正プログラム

Kerberos 認証は 0X80090302 または 0x8009030f、AES アルゴリズムが使用するとき Windows Server 2008 や Windows Vista を実行がコンピューターには、エラー コードと共に失敗します。 (https://support.microsoft.com/kb/969083/ja-jp)

使用中の環境で Windows Server 2008 あるいは Windows Vista を実行中のすべてのコンピューターで、Kerberos 認証の修正プログラムをインストールする必要があることがあります。これには、SharePoint Server が Kerberos 認証を使用して認証する、SharePoint Server 2010、SQL Server、あるいは Windows Server 2008 を実行中のすべてのコンピューターが含まれます。サポートの事例にある現象が発生した場合は、サポート ページの手順に従って、修正プログラムを適用します。