次の方法で共有


KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST 構造体 (ntsecapi.h)

Kerberos ドメイン バインド キャッシュをオーバーライドして、ユーザーが特定のドメイン コントローラー (DC) にバインドできるようにします。 Kerberos では、動的Access Control (DAC) が有効になっている場合に DC 参照が適用されるため、通常、認証は特定の DC にバインドされません。 特定のユーザーは、アカウントを作成した特定の DC にバインドしたり、DC レプリケーションの遅延を回避するために新しいパスワードを設定したりできます。 SeTcbPrivilege 特権セットが必要です。

構文

typedef struct _KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST {
  KERB_PROTOCOL_MESSAGE_TYPE MessageType;
  UNICODE_STRING             RealmName;
  UNICODE_STRING             KdcAddress;
  ULONG                      AddressType;
  ULONG                      DcFlags;
} KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST, *PKERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST;

メンバー

MessageType

LsaCallAuthenticationPackage 関数を呼び出して Kerberos 認証パッケージに送信できるメッセージの種類を一覧表示するKERB_PROTOCOL_MESSAGE_TYPE列挙の値。 このメンバーは KerbAddBindingCacheEntryExMessage に設定する必要があります。

RealmName

ドメイン コントローラーの領域の名前。

KdcAddress

バインドするサーバーのキー配布センター (KDC) のアドレス。

AddressType

KdcAddress メンバーに含まれる文字列の型。 これには、次のいずれかの値を指定できます。

意味
DS_INET_ADDRESS
アドレスはドメイン コントローラーの文字列 IP アドレスです (例: "\\157.55.94.74")。
DS_NETBIOS_ADDRESS
アドレスは、ドメイン コントローラーの NetBIOS 名 ("\\phoenix" など) です。

DcFlags

呼び出し元が提供するドメイン コントローラー フラグ。 これらのフラグは、 DsGetDcName 関数に渡すために必要です。

注釈

ユーザーの要件と Kerberos の要件の両方を満たすには、Kerberos ドメイン バインド キャッシュをオーバーライドするために 2 つの呼び出しを行う必要があります。

  1. 最初に、MessageType メンバーを KerbQueryDomainExtendedPoliciesMessage に設定する必要があるKERB_QUERY_DOMAIN_EXTENDED_POLICIES_REQUESTの要求メッセージの種類を構築します。 DomainName メンバーは、拡張ドメイン ポリシーのクエリを実行する実際のドメイン名に設定されます。 DomainName が null に設定されている場合、ローカル コンピューターのドメインが想定されます。
  2. 次に、Kerberos 認証パッケージと要求メッセージを使用して LsaCallAuthenticationPackage 関数を呼び出します。 正常に戻ると、 KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE が返されます。
    • ローカル コンピューターで DAC が無効になっている場合、 Flags メンバーは KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE_FLAG_DAC_DISABLED に設定されます。
    • 指定されたドメインでフレキシブル認証セキュア トンネリング (FAST) が有効になっている場合、 ExtendedPolicies メンバーは KERB_EXTENDED_POLICY_FAST_CAPABLE (0x10000) に設定されます。
    • 指定したドメインで要求が有効になっている場合、 ExtendedPolicies メンバーは KERB_EXTENDED_POLICY_CLAIMS_CAPABLE (0x40000) に設定されます。
    • ローカル コンピューター ドメインが DAC を無効にせず、指定したドメインで FAST または Claims が有効になっている場合、DsGetDcName 関数の DsFlags メンバーはDS_DIRECTORY_SERVICE_8_REQUIREDに設定されます。 それ以外の場合、 DsFlags は 0 です。
    • この関数が ProtocolStatus メンバーでエラーを返した場合、STATUS_NOT_FOUNDは、ローカル コンピューターが指定したドメインに対する信頼を持っていないため、指定したドメインに対してクエリを実行できないことを示します。 その他のエラー コードは、実際に発生したエラーを示しています。
  3. 次に、返された DsFlags を独自の要件を表すフラグを使用して DsGetDcName を呼び出す必要があります。これは複数の場合があるため、論理演算子 OR を使用します。 DomainControllerInfo メンバーが返されます。
  4. 最後に、Kerberos 認証パッケージを使用して LsaCallAuthenticationPackage 関数を再度呼び出し、DcFlags メンバーが DomainControllerInfo フラグに設定されている要求KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUESTします。 他のすべてのメンバーは、 KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUESTと同じ方法で設定する必要があります。 KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSEの DsFlags が 0 の場合は、KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUESTを呼び出すときに DcFlags を 0 に設定するか、既定で既存のKERB_ADD_BINDING_CACHE_ENTRY_REQUEST要求に戻す必要があります。

要件

要件
サポートされている最小のクライアント Windows 8 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリのみ]
Header ntsecapi.h

こちらもご覧ください

LsaCallAuthenticationPackage