如何使用带参数的 NTLM 进行身份验证(通过 HTTP)?
How to authenticate with NTLM with parameters (via HTTP)?
我正在使用 InitializeSecurityContext 函数为 HTTP 中的 NTLM 身份验证生成类型 1 和类型 3 消息。当我收到默认 header:
时一切正常
WWW-Authenticate: NTLM
但是,当我收到 header 这样的消息时:
WWW-Authenticate: NTLM realm="SIP Communications Service", targetname="server.domain.com", version=4
它不会接受类型 1 消息,我再次收到所有 WWW-Authenticate header。
这是我用来生成第一响应的函数:
result = SSPI()->InitializeSecurityContextW(
credHandle, // phCredential
0, // phContext
0, // *pszTargetName
ISC_REQ_USE_DCE_STYLE | ISC_REQ_DELEGATE | ISC_REQ_MUTUAL_AUTH
| ISC_REQ_REPLAY_DETECT | ISC_REQ_SEQUENCE_DETECT
| ISC_REQ_CONFIDENTIALITY | ISC_REQ_CONNECTION, // fContextReq
0, // Reserved1
0, // TargetDataRep
0, // pInput
0, // Reserved2
context, // phNewContext
bufferDesc, // pOutput
&outFlags, // pfContextAttr
×tamp // ptsExpiry
);
我已经尝试将 pszTargetName 设置为 L"server.domain.com",但它也不起作用。
知道如何传递领域、目标名称和版本参数(如有必要)吗?
我正在与 Lync 2013 服务器通信。
我能够使用 MS-SIPAE 文档和 NTLM 身份验证示例进行身份验证。整个过程在上面 link.
中有很好的描述
我正在使用 InitializeSecurityContext 函数为 HTTP 中的 NTLM 身份验证生成类型 1 和类型 3 消息。当我收到默认 header:
时一切正常WWW-Authenticate: NTLM
但是,当我收到 header 这样的消息时:
WWW-Authenticate: NTLM realm="SIP Communications Service", targetname="server.domain.com", version=4
它不会接受类型 1 消息,我再次收到所有 WWW-Authenticate header。 这是我用来生成第一响应的函数:
result = SSPI()->InitializeSecurityContextW(
credHandle, // phCredential
0, // phContext
0, // *pszTargetName
ISC_REQ_USE_DCE_STYLE | ISC_REQ_DELEGATE | ISC_REQ_MUTUAL_AUTH
| ISC_REQ_REPLAY_DETECT | ISC_REQ_SEQUENCE_DETECT
| ISC_REQ_CONFIDENTIALITY | ISC_REQ_CONNECTION, // fContextReq
0, // Reserved1
0, // TargetDataRep
0, // pInput
0, // Reserved2
context, // phNewContext
bufferDesc, // pOutput
&outFlags, // pfContextAttr
×tamp // ptsExpiry
);
我已经尝试将 pszTargetName 设置为 L"server.domain.com",但它也不起作用。
知道如何传递领域、目标名称和版本参数(如有必要)吗? 我正在与 Lync 2013 服务器通信。
我能够使用 MS-SIPAE 文档和 NTLM 身份验证示例进行身份验证。整个过程在上面 link.
中有很好的描述