通过本机Java APIvalidationWindows用户凭证

我需要存储Windows用户名和凭据,以便稍后运行一些需要这些凭据的进程。

当我收集这些来自用户的input时,我想validation凭据是否正确。 在Java中有一个本地API,可以帮助我validationWindows系统凭据?

我正在通过LoginContext类,但看起来只能用于SSO目的。 我收到的另外一个build议是尝试启动一个需要这些证书的过程,看它是否正常工作或失败。 但是这看起来并不合适。

请让我知道,如果有人以前做过或有任何想法如何完成。

谢谢,Piyush

Solutions Collecting From Web of "通过本机Java APIvalidationWindows用户凭证"

通过凭据,你的意思是用户的真实密码? 然后,您可以使用LDAP尝试连接到Windows Active Directory。 请参阅相关问题: 使用LDAP的Windows密码身份验证

更复杂的方法是使用本机窗口调用,也许通过JNA平台: http : //jna.java.net/javadoc/platform/com/sun/jna/platform/win32/package-summary.html

有一个名为“华夫饼干”的项目,将其包装在一个更有用的库中,例如https://github.com/dblock/waffle/blob/master/Source/JNA/waffle-jna/src/waffle/中的logonUser函数windows / auth / impl / WindowsAuthProviderImpl.java 。 这直接谈到win32 advapi32.dll。

这也将允许您为本地用户执行Windows身份验证,无需域名。

编辑 :从OP完整的工作代码

 import com.sun.jna.platform.win32.Advapi32; import com.sun.jna.platform.win32.coreel32; import com.sun.jna.platform.win32.WinBase; import com.sun.jna.platform.win32.WinNT.HANDLEByReference; HANDLEByReference phUser = new HANDLEByReference() if(! Advapi32.INSTANCE.LogonUser("administrator", InetAddress.getLocalHost().getHostName(), "password", WinBase.LOGON32_LOGON_NETWORK, WinBase.LOGON32_PROVIDER_DEFAULT, phUser)) { throw new LastErrorException(coreel32.INSTANCE.GetLastError()); }