{ SFI_USERNAME, CPFT_LARGE_TEXT, LUsername }, { SFI_STATUS, CPFT_SMALL_TEXT, LStates }, { SFI_PIN, CPFT_PASSWORD_TEXT, LPin }, { SFI_TIP_TEXT, CPFT_SMALL_TEXT, LTip }, { SFI_SUBMIT_BUTTON, CPFT_SUBMI
{ SFI_USERNAME, CPFT_LARGE_TEXT, L"Username" },
{ SFI_STATUS, CPFT_SMALL_TEXT, L"States" },
{ SFI_PIN, CPFT_PASSWORD_TEXT, L"Pin" },
{ SFI_TIP_TEXT, CPFT_SMALL_TEXT, L"Tip" },
{ SFI_SUBMIT_BUTTON, CPFT_SUBMIT_BUTTON, L"Submit" },
};
用户在登录时选中智能卡标题图片时,即可调用智能卡登录对应的Windows Credential Provider接口函数,并调用ICredentialProviderCredential:: SetSelected函数,在SetSelected函数中判断智能卡是否已经插入,若插入则允许切换到输入PIN码框界面。
if(CheckKeyIsInsert() == true)
{SetConnect();
}
用户在PIN码输入框完成PIN码键入后,智能卡Windows Credential Provider调用ICredentialProviderCredential:: GetSerialization函数。在GetSerialization函数中调用智能卡API校验SFI_PIN对应控件的PIN码是否正确,若检验失败,设置SFI_TIP_TEXT对应的提示文字为PIN码校验结果提示信息。若校验成功,则读取和解密文件系统中加密保存的用户登录信息,并返回到GetSerialization函数的输出参数中。返回的用户登录信息将被Windows登录应用程序验证,若结果匹配则结束登录界面现在Windows桌面,否则提示错误信息。
完成Windows Credential Provider后,需将Windows Credential Provider库拷贝到系统盘System32目录,并通过注册表注册到Windows系统。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers\{ed756d7f-139d-403f-aea8-82e97a83d184}]
@="SMARTCARD_CredentialProvider"
[HKEY_CLASSES_ROOT\CLSID\{ad7a7d7f-139d-403f-aea8-82e97a83d184}]
@=" SMARTCARD _CredentialProvider"
[HKEY_CLASSES_ROOT\CLSID\{ad7a7d7f-139d-403f-aea8-82e97a83d184}\InprocServer32]
@=" SMARTCARD _CredentialProvider.dll"
"ThreadingModel"="Apartment"
3 结束语
至此,我们介绍了一种通过智能卡登录Windows操作系统的方式,并简单介绍了Windows Credential Provider的关键函数。通过上述方法,还得到了一种将用户名密码登录方式转换为另一种登录方式的思路(如指纹登录、证书登录等)。为定制更安全、更方便、更友好的Windows登录程序打下了基础。
参考文献:
[1] Windows Vista Sample Credential Providers Overview.doc[EB].
[2] Credential Providers for PDC - Final.doc[EB].
[3] 陈锐,蒋泽军,陈福,等.基于Credential Provider的身份认证模型的研究与实现[J].航空计算技术,2010(3):1-4.(责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(南粤论文中心__代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)
顶一下
(0)
0%
踩一下
(0)
0%
版权声明:因本文均来自于网络,如果有版权方面侵犯,请及时联系本站删除.