次の方法で共有


HTTP_REQUEST_AUTH_INFO 構造体 (http.h)

HTTP_REQUEST_AUTH_INFO構造体には、要求の認証状態と、受信側のプロセスが認証されたクライアントの偽装に使用できるクライアント トークンへのハンドルが含まれています。

この構造体は、 HTTP_REQUEST_INFO 構造体に含まれています。

構文

typedef struct _HTTP_REQUEST_AUTH_INFO {
  HTTP_AUTH_STATUS       AuthStatus;
  SECURITY_STATUS        SecStatus;
  ULONG                  Flags;
  HTTP_REQUEST_AUTH_TYPE AuthType;
  HANDLE                 AccessToken;
  ULONG                  ContextAttributes;
  ULONG                  PackedContextLength;
  ULONG                  PackedContextType;
  PVOID                  PackedContext;
  ULONG                  MutualAuthDataLength;
  PCHAR                  pMutualAuthData;
  USHORT                 PackageNameLength;
  PWSTR                  pPackageName;
} HTTP_REQUEST_AUTH_INFO, *PHTTP_REQUEST_AUTH_INFO;

メンバー

AuthStatus

要求の最終的な認証状態を示す HTTP_AUTH_STATUS 列挙体のメンバー。

認証の状態が HttpAuthStatusSuccess でない場合、アプリケーションは AuthStatus、SecStatusAuthType を除き、この構造体のメンバー無視する必要があります。

SecStatus

AuthStatus メンバーが HttpAuthStatusFailure の場合のセキュリティ エラーの状態を示すSECURITY_STATUS値。

Flags

次の認証属性を示す認証フラグ。

属性 説明
HTTP_REQUEST_AUTH_FLAG_TOKEN_FOR_CACHED_CRED
指定されたトークンは NTLM 用であり、Keep Alive (KA) 接続のキャッシュされた資格情報に基づいています。

AuthType

要求に対して試行または確立された認証スキームを示す HTTP_REQUEST_AUTH_TYPE 列挙体のメンバー。

AccessToken

認証されたクライアントを偽装するために受信プロセスが使用できるクライアント トークンのハンドル。

トークンのハンドルは、必要なくなったときに CloseHandle を呼び出して閉じる必要があります。 このトークンは、要求の有効期間中のみ有効です。 アプリケーションは、トークンの有効期限が切れたときに、最初の 401 チャレンジを再生成して再認証できます。

ContextAttributes

アクセス トークンのクライアント コンテキスト属性。

PackedContextLength

PackedContext の長さ (バイト単位)。

PackedContextType

PackedContext メンバー内のコンテキストの型。

PackedContext

認証の種類のセキュリティ コンテキスト。

アプリケーションは、SSPI QueryContextAttributes API を呼び出すことによって、パックされたコンテキストの属性に対してクエリを実行できます。 ただし、アプリケーションは、指定された AuthType のセキュリティ パッケージの資格情報ハンドルを取得する必要があります。

シリアル化されたコンテキストが不要になったときに、アプリケーションは SSPI FreeContextBuffer API を呼び出して解放する必要があります。

MutualAuthDataLength

pMutualAuthData メンバーの長さ (バイト単位)。

pMutualAuthData

WWW-Authenticate ヘッダーで使用される Base64 でエンコードされた相互認証データ。

PackageNameLength

pPackageName

注釈

HTTP バージョン 2.0 以降では、 HTTP_REQUEST 構造体には HTTP_REQUEST_INFO 構造体が含まれています。 要求情報の種類が HttpRequestInfoTypeAuth の場合、HTTP_REQUEST_INFO構造体の pVoid メンバーはHTTP_REQUEST_AUTH_INFOを指します。

アプリケーションは、この構造体を使用して要求を受信し、要求が認証されていない場合、 HTTP_MULTIPLE_KNOWN_HEADERS構造体内 の必要な WWW-Authenticate ヘッダーのセットを使用して、最初の 401 チャレンジを送信できます。 HTTP Server API は、認証ハンドシェイクを完了すると、 HTTP_REQUEST_AUTH_INFO 構造を満たし、要求を再度アプリケーションに渡します。 クライアント ID を表すアクセス トークンへのハンドルは、HTTP Server API によってこの構造で提供されます。

コンテキスト属性

ContextAttributes メンバーは、SSPI ベースのスキームに対して提供されます。 たとえば、SSPI アプリケーションは、相互に認証されたセッション に対してASC_RET_MUTUAL_AUTH が設定されているかどうかを判断できます。

HTTP Server API では、 PackedContext メンバー内のコンテキストの有効期限は提供されません。 アプリケーションでは、NTLM 資格情報のキャッシュが有効になっている場合や、キャッシュされたコンテキストの有効期限を照会する場合など、特定の状況で有効期限が必要になる場合があります。 サーバー アプリケーションがアクセス トークンに関連付けられている基になるクライアント コンテキストの有効期限を必要とする場合は、パックされたコンテキストを受け取り、SECPKG_ATTR_LIFESPANを使用して QueryContextAttributes を呼び出すことができます。

相互認証データ

既定では、HTTP Server API によって、相互認証データが最終的な 200 応答に確実に追加されます。一般に、サーバー アプリケーションは相互認証データを送信する責任を負いません。

ただし、アプリケーションは相互認証データを受け取り、最終的な応答で送信できます。 HTTP_SERVER_AUTHENTICATION_INFO構造体の ReceiveMutualAuth メンバーが true に設定されている場合、アプリケーションは認証された要求と共に相互認証のサーバー資格情報を受け取ります。

pMutualAuthData メンバーで提供される相互認証データには、ヘッダー名のない WWW-Authenticate ヘッダーの正確な値が含まれています。 たとえば、 pMutualAuthData は "Negotiate ade02938481eca" を指しています。 アプリケーションは、指定された pMutualAuthData を応答ヘッダー値として追加して、WWW-Authenticate ヘッダーをビルドします。

要件

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

こちらもご覧ください

HTTP Server API バージョン 2.0 構造体

HTTP_REQUEST_INFO

HTTP_REQUEST_V2