我们希望允许用户使用其Windows帐户登录到我们的Client-Server应用程序,而无需提供密码(因为他们已经在计算机上登录了)。域上的用户帐户由Active Directory管理。
今天我们使用自定义身份验证(登录名和密码存储在数据库中):
// Client side
void Login(string username, string password)
{
// Call server side login
}
// Server side
void Login(string username, string password)
{
if (DatabaseAuthentication(username, password))
// Do something
}
我们想获取当前的用户会话ID /令牌,并在服务器端对其进行验证。像这样:
// Client side
void Login()
{
var sid = WindowsIdentity.GetCurrent().SOMETHING;
// Call server side login
}
// Server side
void Login(string sid)
{
if (!IsSessionKnownOnDomain(sid)) return;
// Do something
}
有人知道这是否可能吗?
可能的副本: Authenticating users using Active Directory in Client-Server Application 但是问题是C ++,而不是CSharp。 另外,如果身份验证类型为Kerberos,我不知道有关NegociateStream的说明是否适用于此?
预先感谢