我正在为Windows 7的MSV1_0构建一个自定义身份验证子包.我已经使用了Windows SDK中的msvsubauth示例,我对我遇到的一些问题有两个问题:
当我正在尝试确保调用例程get并将注册表中的Auth0属性设置为我的包并在创建文件的Msv1_0SubAuthenticationRoutine末尾添加一个简单代码:
//
// Cleanup up before returning.
//
Cleanup:
hTestFile = CreateFile(
TEXT("C:\\lsa\\lsa.txt"),
GENERIC_READ|GENERIC_WRITE, 0,
NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);
if(hTestFile != INVALID_HANDLE_VALUE) {
CloseHandle(hTestFile);
}
return Status;
} // Msv1_0SubAuthenticationRoutine
Run Code Online (Sandbox Code Playgroud)
显然,包被调用,因为当我输入我的密码时,我收到来自windows的错误消息"参数不正确"这是一个好兆头.但为什么我会收到这个错误?当从单独的.exe文件执行完全相同的代码时,它运行完美并创建测试文本文件.我检查了权限并为"所有人"设置了"完全控制".有任何想法吗?SDK没有明确提到LSA为auth包中的代码创建了什么样的隔离.
第二个问题是测试AP.目前,每次更改我都会重建库,将其复制到测试VM,然后复制到System32文件夹并重新启动它.有更简单的方法吗?
预先感谢!
我正在尝试使用LsaLogonUser创建交互式登录会话,但它始终返回STATUS_INVALID_INFO_CLASS
(0xc0000003).从我在网上搜索中发现,KERB_INTERACTIVE_LOGON
结构的内存布局很棘手,但我很确定我已经做到了.
我也尝试使用MSV1.0而不是Kerberos,MSV1_0_INTERACTIVE_LOGON
用于身份验证结构和MSV1_0_PACKAGE_NAME
包名称,但是失败了STATUS_BAD_VALIDATION_CLASS
(0xc00000a7).
谁能告诉我这里做错了什么?这是代码,大部分错误处理都被剥离了.显然,这不是生产质量; 我只想尝试一个工作样本.
// see below for definitions of these
size_t wcsByteLen( const wchar_t* str );
void InitUnicodeString( UNICODE_STRING& str, const wchar_t* value, BYTE* buffer, size_t& offset );
int main( int argc, char * argv[] )
{
// connect to the LSA
HANDLE lsa;
LsaConnectUntrusted( &lsa );
const wchar_t* domain = L"mydomain";
const wchar_t* user = L"someuser";
const wchar_t* password = L"scaryplaintextpassword";
// prepare the authentication info
ULONG authInfoSize …
Run Code Online (Sandbox Code Playgroud) 我正在实施一种基于 Microsoft 白皮书“ Windows 7 和 Windows Server 2008 R2 中使用一次性密码的强身份验证”的 OTP 解决方案。
该白皮书相关部分的摘要是通过为 Windows CNG 子系统实现自定义密钥存储提供程序 (KSP) 来伪造智能卡读卡器的存在。但是,按照所述说明进行操作后,我无法在需要时让操作系统使用我的自定义 KSP。
在我的凭据提供程序中,我正在创建一个具有 KERB_CERTIFICATE_LOGON 和 KERB_SMARTCARD_CSP_INFO 结构的身份验证包。我的自定义 KSP 根据需要在 KERB_SMARTCARD_CSP_INFO 中引用(它也已正确注册,可以枚举,并且可以与 NCrypt API 一起使用)。然而,在 ICredentialProviderCredential::GetSerialization 返回后(甚至没有将 DLL 加载到内存中)或在我的独立测试应用程序中调用 LsaLogonUser() 期间,操作系统永远不会加载它。
该问题与 MSDN 论坛中描述的问题相同(没有任何答案),并且我得出了相同的结论,即该问题与 KERB_SMARTCARD_CSP_INFO 的内容有关(可以在此处找到示例用法) - 但是由于几乎没有文档和这种罕见情况没有一个例子,我不知道该怎么办......
kerberos smartcard one-time-password credential-providers local-security-authority
我一直致力于为 Windows 10 实现自定义身份验证包。阅读以下 Windows 文档https://msdn.microsoft.com/en-us/library/windows/desktop/aa374731(v=vs.85).aspx #functions_implemented_by_authentication_packages 我实现了 auth 包所需的方法。我为 auth 包实现编写的代码:
LSA_DISPATCH_TABLE DispatchTable;
NTSTATUS NTAPI
LsaApCallPackagePassthrough(IN PLSA_CLIENT_REQUEST ClientRequest,
IN PVOID ProtocolSubmitBuffer,
IN PVOID ClientBufferBase,
IN ULONG SubmitBufferLength,
OUT PVOID *ProtocolReturnBuffer,
OUT PULONG ReturnBufferLength,
OUT PNTSTATUS ProtocolStatus);
NTSTATUS NTAPI
LsaApCallPackage(
IN PLSA_CLIENT_REQUEST ClientRequest,
IN PVOID ProtocolSubmitBuffer,
IN PVOID ClientBufferBase,
IN ULONG SubmitBufferLength,
OUT PVOID *ProtocolReturnBuffer,
OUT PULONG ReturnBufferLength,
OUT PNTSTATUS ProtocolStatus
);
NTSTATUS
NTAPI
LsaApCallPackageUntrusted(IN PLSA_CLIENT_REQUEST ClientRequest,
IN PVOID ProtocolSubmitBuffer,
IN PVOID ClientBufferBase,
IN ULONG SubmitBufferLength,
OUT PVOID *ProtocolReturnBuffer, …
Run Code Online (Sandbox Code Playgroud) c winapi winlogon windows-authentication local-security-authority