我正在寻找一个在Windows 8.1和Windows 10上都能工作的想法/解决方案。
对于我的WPF应用程序中的关键操作,我希望用户再次显式地针对操作系统进行身份验证。在web上存在许多自定义解决方案,比如NuGet包,它们看起来像一个向用户询问密码的Windows提示符。就像出现的那个一样,如果您试图访问未经身份验证的网络共享。
我不想使用那些自定义的解决方案,我想使用操作系统提供的解决方案,如果有的话。
详细地说,我正在寻找这样的东西:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
bool authenticated = [WindowsAPI].Authenticate(identity);
if(authenticated)
{
//do critical action
}这样的WindowsAPI存在吗?
编辑: WindowsAPI应该有自己的UI,在最好的情况下,验证凭据而不存储任何凭据。
向你问好,克里斯蒂安
发布于 2020-04-06 08:00:14
总体答案是:不,不存在包含自己的UI并对输入的凭据进行验证的Windows。
简而言之,我使用了弹出可配置操作系统对话框的CredUIPromptForWindowsCredentials输入凭据,使用CredUnPackAuthenticationBuffer解压缩凭据,使用LogonUser验证未打包的凭据。最后,使用CredUIPromptForWindowsCredentials使用CoTaskMemFree清除分配的内存。
博士女士:
P/援引文件:
发布于 2020-04-02 08:19:43
bool authenticated = [WindowsAPI].Authenticate(identity);应该让用户再输入一次登录和密码吗?
您可以尝试使用Windows LogonUser。但是,它不提供用户界面来收集用户名和密码。您可以尝试用自己的两个文本框创建一个对话框。
有IPublicClientApplication和AcquireToken*方法。请查一下AcquireTokenByIntegratedWindowsAuth。但是,它与AzureAD一起工作以获得令牌,因此我不确定它是否适合您的需求。
https://stackoverflow.com/questions/60986728
复制相似问题