다음을 통해 공유


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

협상 가능한 보안 패키지에서 사용하는 형식을 나타내는 서명되지 않은 긴 플래그입니다.

의미
SEC_WINNT_AUTH_IDENTITY_MARSHALLED
4(0x4)
모든 데이터는 하나의 버퍼에 있습니다.
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)
자격 증명은 유니코드 형식입니다.
SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER
524288 (0x80000)
자격 증명 형식이 암호인 경우 이 플래그의 존재는 구조가 온라인 ID 자격 증명임을 지정합니다. DomainOffsetDomainLength 멤버는 온라인 ID 공급자 이름에 해당합니다.

Windows Server 2008 R2 및 Windows 7: 이 플래그는 지원되지 않습니다.

SEC_WINNT_AUTH_IDENTITY_FLAGS_PROCESS_ENCRYPTED
16(0x10)
구조체는 SspiEncryptAuthIdentity 함수 또는 SspiEncryptAuthIdentityEx 함수에 의해 SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_PROCESS 옵션으로 암호화됩니다. 동일한 프로세스에서만 암호를 해독할 수 있습니다.

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)
구조체는 비 SYSTEM 보안 컨텍스트에서 SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON 옵션을 사용하여 SspiEncryptAuthIdentityEx 함수에 의해 암호화됩니다. 암호화된 동일한 로그온 세션에서 실행되는 스레드에서만 암호를 해독할 수 있습니다.

Windows Server 2008 R2 및 Windows 7: 이 플래그는 지원되지 않습니다.

SEC_WINNT_AUTH_IDENTITY_FLAGS_RESERVED
65536 (0x10000)
인증 ID 버퍼는 id의 현재 위치 암호화 또는 암호 해독에 필요한 cbStructureLength + 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 멤버를 직접 쿼리하거나 설정해서는 안 됩니다. SspiIsAuthIdentityEncrypted, SspiEncryptAuthIdentityExSspiDecryptAuthIdentityEx 함수를 사용하여 SEC_WINNT_AUTH_IDENTITY_EX2 구조체의 암호화 및 암호 해독을 관리합니다.

ID 공급자는 도메인 암호 및 다른 ID 공급자의 암호와 암호 자격 증명을 구분하기 위해 SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER 및 도메인 이름 필드를 명시적으로 검사 설정해야 합니다.

credPackAuthenticationBuffer 함수는 CRED_PACK_ID_PROVIDER_CREDENTIALS 옵션을 사용하여 호출하여 SEC_WINNT_AUTH_DATA_TYPE_PASSWORD 자격 증명 형식의 인증 데이터, SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER 값이 포함된 Flags 멤버 및 공급자 이름으로 설정된 DomainOffset 멤버를 사용하여 SEC_WINNT_AUTH_IDENTITY_EX2 구조를 만들 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱만 해당]
머리글 sspi.h