SEC_WINNT_AUTH_IDENTITY_EX2構造体 (sspi.h)

認証 ID に関する情報が含まれています。 SEC_WINNT_AUTH_IDENTITY_EX2 構造体には、AcquireCredentialsHandle 関数に提供される認証データが含まれています。

構文

typedef struct _SEC_WINNT_AUTH_IDENTITY_EX2 {
  unsigned long  Version;
  unsigned short cbHeaderLength;
  unsigned long  cbStructureLength;
  unsigned long  UserOffset;
  unsigned short UserLength;
  unsigned long  DomainOffset;
  unsigned short DomainLength;
  unsigned long  PackedCredentialsOffset;
  unsigned short PackedCredentialsLength;
  unsigned long  Flags;
  unsigned long  PackageListOffset;
  unsigned short PackageListLength;
} SEC_WINNT_AUTH_IDENTITY_EX2, *PSEC_WINNT_AUTH_IDENTITY_EX2;

メンバーズ

Version

構造体のバージョン番号。 これは SEC_WINNT_AUTH_IDENTITY_VERSION_2する必要があります。

cbHeaderLength

構造体ヘッダーのサイズ (バイト単位)。

cbStructureLength

構造体のサイズ (バイト単位)。

UserOffset

構造体の先頭からユーザー名文字列の先頭までのオフセット。

UserLength

ユーザー名文字列のサイズ (バイト単位)。

DomainOffset

構造体の先頭からドメイン名文字列の先頭までのオフセット。

ID 資格情報には、ドメイン名ではなく ID プロバイダー名を含める必要があります。

DomainLength

ドメイン名文字列のサイズ (バイト単位)。

PackedCredentialsOffset

構造体の先頭からパックされた資格情報の先頭までのオフセット。

パックされた資格情報は、資格情報の種類を一意に指定する資格情報の種類を含む SEC_WINNT_AUTH_PACKED_CREDENTIALS 構造です。

PackedCredentialsLength

パックされた資格情報文字列のサイズ (バイト単位)。

Flags

の否定可能な セキュリティ パッケージで使用される型を示す、符号なし long フラグ。

価値 意味
SEC_WINNT_AUTH_IDENTITY_MARSHALLED
4 (0x4)
すべてのデータは 1 つのバッファー内にあります。
SEC_WINNT_AUTH_IDENTITY_ONLY
8 (0x8)
Kerberosセキュリティ サポート プロバイダー (SSP) と共に使用されます。 資格情報は ID 専用です。 Kerberos パッケージは、チケットに承認データを含めないように指示されます。
SEC_WINNT_AUTH_IDENTITY_ANSI
1 (0x1)
資格情報は ANSI 形式です。
SEC_WINNT_AUTH_IDENTITY_UNICODE
2 (0x2)
資格情報は Unicode 形式です。
SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER
524288 (0x80000)
資格情報の種類がパスワードの場合、このフラグが存在すると、構造体がオンライン ID 資格情報であることが指定されます。 DomainOffset および DomainLength メンバーは、オンライン ID プロバイダー名に対応します。

Windows Server 2008 R2 および Windows 7: このフラグはサポートされていません。

SEC_WINNT_AUTH_IDENTITY_FLAGS_PROCESS_ENCRYPTED
16 (0x10)
構造体は、SspiEncryptAuthIdentity 関数または SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_PROCESS オプション SspiEncryptAuthIdentityEx 関数によって暗号化されます。 同じプロセスでのみ暗号化を解除できます。

Windows Server 2008 R2 および Windows 7: このフラグはサポートされていません。

SEC_WINNT_AUTH_IDENTITY_FLAGS_SYSTEM_PROTECTED
32 (0x20)
構造体は、SYSTEM セキュリティ コンテキストの下の SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON オプションを使用して、SspiEncryptAuthIdentityEx 関数によって暗号化されます。 暗号化を解除できるのは、SYSTEM として実行されているスレッドだけです。

Windows Server 2008 R2 および Windows 7: このフラグはサポートされていません。

SEC_WINNT_AUTH_IDENTITY_FLAGS_USER_PROTECTED
64 (0x40)
構造体は、SspiEncryptAuthIdentityEx 関数によって暗号化され、system 以外のセキュリティ コンテキストの下でSEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGONオプションを使用します。 暗号化されたのと同じログオン セッションで実行されているスレッドによってのみ復号化できます。

Windows Server 2008 R2 および Windows 7: このフラグはサポートされていません。

SEC_WINNT_AUTH_IDENTITY_FLAGS_RESERVED
65536 (0x10000)
認証 ID バッファーは、cbStructureLength + ID のインプレース暗号化または暗号化解除に必要な 8 パディング バイトです。

PackageListOffset

構造体の先頭からサポートされているパッケージの一覧の先頭までのオフセット。

PackageListLength

サポートされているパッケージ リストのサイズ (バイト単位)。

備考

この認証 ID バッファーは、GetSerialization メソッド、CredUIPromptForWindowsCredentialSspiPromptForCredentials 関数など、複数の資格情報 API から返すことができます。

構造体は認証 ID バッファーのヘッダーを記述し、データは構造体の末尾に追加されます。 バッファー サイズは cbStructureLength メンバーによって指定されますが、実際のバッファー サイズは cbStructureLengthより大きいか小さくすることができます。 SspiValidateAuthIdentityなどの一部の関数は、入力として ID 構造体へのポインターを受け取りますが、バッファー サイズは受け取りません。 その結果、これらの関数は内部バッファー データを検証できますが、バッファー サイズを確認することはできません。 これにより、バッファー範囲外のデータの読み取りまたは書き込みが発生する可能性があります。 信頼されていない ID バッファーを処理するときにバッファー オーバーランを回避するには、アプリケーションで SspiUnmarshalAuthIdentity を呼び出して、検証済みのサイズを持つ ID 構造体へのポインターを取得し、そのポインターを関数に渡す必要があります。

SEC_WINNT_AUTH_IDENTITY_EX2 構造体は、QueryContextAttributes(CredSSP) によって返され、AcquireCredentialsHandle(CredSSP)LsaLogonUser、およびその他の ID プロバイダー インターフェイスによって使用されます。

SEC_WINNT_AUTH_PACKED_CREDENTIALS には、SEC_WINNT_AUTH_DATA_TYPE_PASSWORDとして定義されたパスワード資格情報の種類を含めることができます。 この資格情報の種類は、ドメイン ユーザーのパスワード資格情報と、その他のオンライン ID について説明します。 アプリケーションでは、この資格情報の種類と SEC_WINNT_AUTH_PACKED_CREDENTIALS 構造体の他の定義を参照するコードをコンパイルするための_SEC_WINNT_AUTH_TYPESを定義する必要があります。

アプリケーションは、Flags メンバーに対して直接クエリを実行したり設定したりしないでください。 SspiIsAuthIdentityEncryptedSspiEncryptAuthIdentityEx、および SspiDecryptAuthIdentityEx 関数を使用して、SEC_WINNT_AUTH_IDENTITY_EX2 構造の暗号化と復号化を管理します。

ID プロバイダーは、パスワード資格情報をドメイン パスワードと別の ID プロバイダーのパスワードと区別するために、SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDERフィールドとドメイン名フィールドを明示的に確認または設定する必要があります。

CredPackAuthenticationBuffer 関数は、CRED_PACK_ID_PROVIDER_CREDENTIALS オプションを使用して呼び出して、SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER値を含む Flags メンバー SEC_WINNT_AUTH_DATA_TYPE_PASSWORD認証データを持つ SEC_WINNT_AUTH_IDENTITY_EX2 構造を作成できます。 および DomainOffset メンバーがプロバイダー名に設定されます。

必要条件

要件 価値
サポートされる最小クライアント Windows 7 [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
ヘッダー sspi.h