セキュリティ サポート プロバイダー インターフェイスのアーキテクチャ

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016

この IT プロフェッショナル向けリファレンスのトピックでは、セキュリティ サポート プロバイダー インターフェイス (SSPI) アーキテクチャ内で使用される Windows 認証プロトコルについて説明します。

Microsoft セキュリティ サポート プロバイダー インターフェイス (SSPI) は、Windows 認証の基盤です。 認証を必要とするアプリケーション サービスとインフラストラクチャ サービスは、SSPI を使用して認証を提供します。

SSPI は、Windows サーバー オペレーティング システムでの汎用セキュリティ サービス API (GSSAPI) の実装です。 GSSAPI の詳細については、IETF RFC データベースの RFC 2743 および RFC 2744 を参照してください。

Windows で特定の認証プロトコルを呼び出す既定のセキュリティ サポート プロバイダー (SSP) は、SSPI に DLL として組み込まれています。 これらの既定の SSP については、次のセクションで説明します。 SSPI で動作できる場合は、追加の SSP を組み込むことができます。

次の図に示すように、Windows の SSPI は、クライアント コンピューターとサーバー間の既存の通信チャネルを介して認証トークンを伝達するメカニズムを提供します。 2 台のコンピューターまたはデバイスを安全に通信できるように認証する必要がある場合、、現在使用中のネットワーク プロトコルに関係なく、認証の要求が SSPI にルーティングされ、SSPI が認証プロセスを完了します。 SSPI は、透過的なバイナリ ラージ オブジェクトを返します。 これらはアプリケーション間で渡され、その時点で SSPI レイヤーに渡すことができます。 SSPI を使用すると、アプリケーションは、セキュリティ システムへのインターフェイスを変更せずに、コンピューターまたはネットワークで使用可能なさまざまなセキュリティ モデルを使用できるようになります。

Diagram showing the Security Support Provider Interface Architecture

次のセクションでは、SSPI と対話する既定の SSP について説明します。 SSP は Windows オペレーティング システムのさまざまな方法で使用され、セキュリティで保護されていないネットワーク環境での安全な通信を促進しています。

このトピックにも含まれています。

セキュリティ サポート プロバイダーの選択

Kerberos セキュリティ サポート プロバイダー

この SSP は、Microsoft によって実装された Kerberos バージョン 5 プロトコルのみを使用します。 このプロトコルは、ネットワーク作業グループの RFC 4120 と下書きのリビジョンに基づいています。 これは、対話型ログオン用のパスワードまたはスマート カードで使用される業界標準のプロトコルです。 また、Windows のサービスで推奨される認証方法でもあります。

Kerberos プロトコルは Windows 2000 以降の既定の認証プロトコルであるため、すべてのドメイン サービスで Kerberos SSP がサポートされています。 次のようなサービスがあります。

  • ライトウェイト ディレクトリ アクセス プロトコル (LDAP) を使用する Active Directory クエリ

  • リモート プロシージャ コール サービスを使用するリモート サーバーまたはワークステーションの管理

  • 印刷サービス

  • クライアント/サーバー認証

  • サーバー メッセージ ブロック (SMB) プロトコル (共通インターネット ファイル システムまたは CIFS とも呼ばれます) を使用するリモート ファイル アクセス

  • 分散ファイル システムの管理と紹介

  • インターネット インフォメーション サービス (IIS) へのイントラネット認証

  • インターネット プロトコル セキュリティ (IPsec) のセキュリティ機関認証

  • ドメイン ユーザーとコンピューターの Active Directory 証明書サービスへの証明書要求

場所: %Windir%\System32\kerberos.dll

このプロバイダーは、このトピックの冒頭にある「適用対象」の一覧に記載されているバージョンに加えて、Windows Server 2003 および Windows XP に既定で含まれています。

Kerberos プロトコルと Kerberos SSP に関するその他のリソース

NTLM セキュリティ サポート プロバイダー

NTLM セキュリティ サポート プロバイダー (NTLM SSP) は、セキュリティ サポート プロバイダー インターフェイス (SSPI) が使用するバイナリ メッセージング プロトコルであり、NTLM チャレンジ応答認証を可能にし、整合性と機密性のオプションをネゴシエートします。 NTLM は、サーバー メッセージ ブロックや CIFS 認証、HTTP ネゴシエート認証 (インターネット Web 認証など)、リモート プロシージャ コール サービスなど、SSPI 認証が使用される場所で使用されます。 NTLM SSP には、NTLM と NTLM バージョン 2 (NTLMv2) の認証プロトコルが含まれています。

サポートされている Windows オペレーティング システムでは、次の場合に NTLM SSP を使用できます。

  • クライアント/サーバー認証

  • 印刷サービス

  • CIFS (SMB) を使用したファイル アクセス

  • リモート プロシージャ コール サービスまたは DCOM サービスをセキュリティで保護する

場所: %Windir%\System32\msv1_0.dll

このプロバイダーは、このトピックの冒頭にある「適用対象」の一覧に記載されているバージョンに加えて、Windows Server 2003 および Windows XP に既定で含まれています。

NTLM プロトコルと NTLM SSP に関するその他のリソース

ダイジェスト セキュリティ サポート プロバイダー

ダイジェスト認証は、ライトウェイト ディレクトリ アクセス プロトコル (LDAP) と Web 認証に使用される業界標準です。 ダイジェスト認証は、MD5 ハッシュまたはメッセージ ダイジェストとしてネットワーク経由で資格情報を送信します。

ダイジェスト SSP (Wdigest.dll) は、次の場合に使用されます。

  • Internet Explorer とインターネット インフォメーション サービス (IIS) へのアクセス

  • LDAP クエリ

場所: %Windir%\System32\Wdigest.dll

このプロバイダーは、このトピックの冒頭にある「適用対象」の一覧に記載されているバージョンに加えて、Windows Server 2003 および Windows XP に既定で含まれています。

ダイジェスト プロトコルとダイジェスト SSP に関するその他のリソース

Schannel セキュリティ サポート プロバイダー

セキュリティで保護されたチャネル (Schannel) は、ユーザーがセキュリティで保護された Web サーバーにアクセスしようとする場合など、Web ベースのサーバー認証に使用されます。

TLS プロトコル、SSL プロトコル、プライベート通信テクノロジ (PCT) プロトコル、およびデータグラム トランスポート レイヤー (DTLS) プロトコルは、公開キーの暗号化に基づいています。 Schannel には、これらすべてのプロトコルが用意されています。 どの Schannel プロトコルでも、クライアント/サーバー モデルが使用されています。 Schannel SSP では、公開キー証明書を使用して利用者を認証します。 パーティを認証する場合、Schannel SSP は次の優先順位でプロトコルを選択します。

  • トランスポート層セキュリティ (TLS) バージョン 1.0

  • トランスポート層セキュリティ (TLS) バージョン 1.1

  • トランスポート層セキュリティ (TLS) バージョン 1.2

  • Secure Socket Layer (SSL) バージョン 2.0

  • Secure Socket Layer (SSL) バージョン 3.0

  • プライベート通信テクノロジ (PCT)

    CTは既定で無効になっています。

選択されたプロトコルは、クライアントとサーバーがサポートできる優先認証プロトコルです。 たとえば、サーバーがすべての Schannel プロトコルをサポートし、クライアントが SSL 3.0 と SSL 2.0 のみをサポートしている場合、認証プロセスでは SSL 3.0 が使用されます。

DTLS は、アプリケーションによって明示的に呼び出されたときに使用されます。 DTLS と Schannel プロバイダーで使用されるその他のプロトコルの詳細については、「Schannel セキュリティ サポート プロバイダー テクニカルリファレンス」を参照してください。

場所: %Windir%\System32\Schannel.dll

このプロバイダーは、このトピックの冒頭にある「適用対象」の一覧に記載されているバージョンに加えて、Windows Server 2003 および Windows XP に既定で含まれています。

Note

TLS 1.2 は、Windows Server 2008 R2 および Windows 7 のこのプロバイダーに導入されました。 DTLS は、Windows Server 2012 および Windows 8 のこのプロバイダーに導入されました。

TLS、SSL プロトコル、および Schannel SSP に関するその他のリソース

ネゴシエート セキュリティ サポート プロバイダー

シンプルで保護された GSS-API ネゴシエーション メカニズム (SPNEGO) は、ネゴシエート SSP の基盤を形成します。これは、特定の認証プロトコルをネゴシエートするために使用できます。 アプリケーションは、SSPI を呼び出してネットワークにログオンするときに、要求を処理する SSP を指定できます。 アプリケーションでネゴシエート SSP が指定されている場合、アプリケーションは要求を分析し、顧客が構成したセキュリティ ポリシーに基づいて要求を処理する適切なプロバイダーを選択します。

SPNEGO は RFC 2478 で指定されています。

サポートされているバージョンの Windows オペレーティング システムでは、ネゴシエート セキュリティ サポート プロバイダーが Kerberos プロトコルと NTLM の間で選択します。 ネゴシエートでは、認証に関係するシステムのいずれかでプロトコルを使用できない場合や、呼び出し元のアプリケーションが Kerberos プロトコルを使用するための十分な情報を提供していない場合を除き、既定で Kerberos プロトコルが選択されます。

場所: %Windir%\System32\lsasrv.dll

このプロバイダーは、このトピックの冒頭にある「適用対象」の一覧に記載されているバージョンに加えて、Windows Server 2003 および Windows XP に既定で含まれています。

ネゴシエート SSP に関するその他のリソース

資格情報セキュリティ サポート プロバイダー

資格情報セキュリティ サービス プロバイダー (CredSSP) は、新しいターミナル サービスおよびリモート デスクトップ サービスのセッションを開始するときに、シングル サインオン (SSO) ユーザー エクスペリエンスを提供します。 CredSSP を使用すると、アプリケーションはクライアントのポリシーに基づいて、(クライアント側の SSP を使用して) クライアント コンピューターから (サーバー側 SSP を介して) ターゲット サーバーにユーザーの資格情報を委任できます。 CredSSP ポリシーは、グループ ポリシーを使用して構成され、資格情報の委任は既定でオフになっています。

場所: %Windir%\System32\credssp.dll

このプロバイダーは、このトピックの冒頭にある「適用対象」の一覧に記載されているバージョンに既定で含まれています。

資格情報 SSP に関するその他のリソース

ネゴシエート拡張機能セキュリティサポートプロバイダー

ネゴシエート拡張機能 (NegoExts) は、Microsoft や他のソフトウェア企業によって実装されるアプリケーションとシナリオに対して、NTLM または Kerberos プロトコル以外の SSP の使用をネゴシエートする認証パッケージです。

このネゴシエート パッケージの拡張機能では、次のシナリオが可能になります。

  • フェデレーション システム内のリッチ クライアントの可用性。 ドキュメントは SharePoint サイトから入手でき、フル機能の Microsoft Office アプリケーションを使用して編集できます。

  • Microsoft Office サービスのリッチ クライアント サポート。 ユーザーは、Microsoft Office サービスにサインインして、フル機能の Microsoft Office アプリケーションを使用できます。

  • ホストされている Microsoft Exchange Server と Outlook。 Exchange サーバーは Web でホストされているため、ドメインの信頼は確立されていません。 Outlookは、Windows Live サービスを使用してユーザーを認証します。

  • クライアント コンピューターとサーバー間にはリッチクライアントの可用性があります。 オペレーティング システムのネットワークと認証コンポーネントが使用されます。

Windows ネゴシエート パッケージは、Kerberos および NTLM の場合と同じ方法でNegoExtsSSP を処理します。 NegoExts.dll は、起動時にローカル システム機関 (LSA) に読み込まれます。 認証要求を受信すると、NegoExts は要求のソースに基づいて、サポートされている SSP 間でネゴシエートします。 資格情報とポリシーを収集して暗号化し、その情報を適切な SSP に送信してセキュリティ トークンを作成します。

NegoExts でサポートされている SSP は、Kerberos や NTLM などのスタンドアロン SSP ではありません。 そのため、NegoExts SSP 内では、何らかの理由で認証方法が失敗すると、認証エラー メッセージが表示またはログに記録されます。 再ネゴシエーションまたはフォールバック認証方法は使用できません。

場所: %Windir%\System32\negoexts.dll

このプロバイダーは、このトピックの冒頭にある「適用対象」の一覧に記載されているバージョン (Windows Server 2008 および Windows Vista を除く) に既定で含まれています。

PKU2U セキュリティ サポート プロバイダー

PKU2U プロトコルは、Windows 7 および Windows Server 2008 R2 に SSP として導入および実装されました。 この SSP は、特に Windows 7 で導入された HomeGroup と呼ばれるメディアおよびファイル共有機能を介してピアツーピア認証を可能にします。 この機能により、ドメインのメンバーではないコンピューター間での共有が可能になります。

場所: %Windir%\System32\pku2u.dll

このプロバイダーは、このトピックの冒頭にある「適用対象」の一覧に記載されているバージョン (Windows Server 2008 および Windows Vista を除く) に既定で含まれています。

PKU2U プロトコルと PKU2U SSP に関するその他のリソース

セキュリティ サポート プロバイダーの選択

Windows SSPI は、インストールされているセキュリティ サポート プロバイダーでサポートされている任意のプロトコルを使用できます。 ただし、すべてのオペレーティング システムが Windows サーバーを実行している特定のコンピューターと同じ SSP パッケージをサポートしているわけではないため、クライアントとサーバーは、両方がサポートするプロトコルを使用するようにネゴシエートする必要があります。 Windows サーバーは、クライアント コンピューターとアプリケーションが可能な場合は標準ベースの強力なプロトコルである Kerberos プロトコルを使用することを優先しますが、オペレーティング システムでは、Kerberos プロトコルをサポートしていないクライアント コンピューターとクライアント アプリケーションの認証を引き続き許可します。

認証を行う前に、通信している 2 台のコンピューターが両方でサポートできるプロトコルに同意する必要があります。 SSPI を介してプロトコルを使用するには、各コンピューターに適切な SSP が必要です。 たとえば、クライアント コンピューターとサーバーで Kerberos 認証プロトコルを使用するには、両方が Kerberos v5 をサポートしている必要があります。 Windows サーバーでは、EnumerateSecurityPackages 関数を使用して、コンピューターでサポートされている SSP と、それらの SSP の機能を特定します。

認証プロトコルの選択は、次の 2 つの方法のいずれかで処理できます。

  1. 単一認証プロトコル

  2. ネゴシエート オプション

単一認証プロトコル

サーバーで 1 つの受け入れ可能なプロトコルが指定されている場合、クライアント コンピューターは指定されたプロトコルをサポートする必要があります。そうしないと、通信が失敗します。 1 つの受け入れ可能なプロトコルが指定されている場合、認証交換は次のように行われます。

  1. クライアント コンピューターがサービスへのアクセスを要求します。

  2. サーバーは要求に応答し、使用するプロトコルを指定します。

  3. クライアント コンピューターは応答の内容を調べ、指定されたプロトコルをサポートしているかどうかを確認します。 クライアント コンピューターが指定されたプロトコルをサポートしている場合、認証は続行されます。 クライアント コンピューターがプロトコルをサポートしていない場合、クライアント コンピューターがリソースへのアクセスを許可されているかどうかに関係なく、認証は失敗します。

ネゴシエート オプション

ネゴシエート オプションを使用すると、クライアントとサーバーが受け入れ可能なプロトコルの検索を試みることができます。 これは、シンプルで保護された GSS-API ネゴシエーション メカニズム (SPNEGO) に基づいています。 認証が認証プロトコルをネゴシエートするオプションで始まる場合、SPNEGO 交換は次のように行われます。

  1. クライアント コンピューターがサービスへのアクセスを要求します。

  2. サーバーは、最初に選択したプロトコルに基づいて、サポートできる認証プロトコルと認証チャレンジまたは応答の一覧で応答します。 たとえば、サーバーで Kerberos プロトコルと NTLM が一覧表示され、Kerberos 認証応答が送信される場合があります。

  3. クライアント コンピューターは応答の内容を調べ、指定されたプロトコルのいずれかをサポートしているかどうかを確認します。

    • クライアント コンピューターが優先プロトコルをサポートしている場合は、認証が続行されます。

    • クライアント コンピューターが優先プロトコルをサポートしていないが、サーバーによってリストされている他のプロトコルの 1 つをサポートしている場合、クライアント コンピューターはサーバーにサポートする認証プロトコルを通知し、認証が続行されます。

    • クライアント コンピューターがリストされているプロトコルのいずれもサポートしていない場合、認証交換は失敗します。

その他の参照情報

Windows 認証のアーキテクチャ