Dotnet: - Как добиться аутентификации Windows в приложении оконной формы?

Я хочу создать приложение формы Windows и хочу использовать проверку подлинности Windows для входа пользователя, его нужно использовать в интрасети. приложение должно принять имя пользователя и пароль от пользователя и должно аутентифицировать его. как этого добиться.


person Prachur    schedule 16.03.2011    source источник
comment
Вот одна из реализации   -  person Sanjeevakumar Hiremath    schedule 16.03.2011
comment
@ Санджив :- я воспользовался твоей идеей. Спасибо за помощь   -  person Prachur    schedule 16.03.2011


Ответы (3)


Этого можно добиться с помощью Interop Services. Используйте приведенный ниже код.

    [System.Runtime.InteropServices.DllImport("advapi32.dll")]
    public static extern bool LogonUser(string userName, string domainName, string password, int LogonType, int LogonProvider, ref IntPtr phToken);

    public bool IsValidateCredentials(string userName, string password, string domain)
    {
        IntPtr tokenHandler = IntPtr.Zero;
        bool isValid = LogonUser(userName, domain, password, 3, 0, ref tokenHandler);
        return isValid;
    }
person The King    schedule 16.03.2011

Environment.UserName дает вам имя пользователя текущего пользователя. Пароль не требуется, так как пользователь вошел в Windows.

Альтернатива: WindowsIdentity.GetCurrent()

person jgauffin    schedule 16.03.2011
comment
Environment.Username дает мне имя пользователя, вошедшего в систему, но достаточно ли этого, чтобы разрешить вход в мое приложение? Естественно, мне нужно будет сопоставить вошедшего в систему пользователя с пользователем в моей таблице пользователей, и выполнение этого только по имени пользователя выглядит слабым. Что, если кто-то создаст на своем компьютере локальный домен с тем же именем, что и домен интранета, и создаст пользователя с именем того, кого он хочет взломать. Таким образом, он может войти в систему с любым пользователем буквы. Я ошибся? - person e-mre; 30.11.2011
comment
Вы нашли решение? У нас есть проверка подлинности Windows в нашем настольном приложении, но мы не проверяем домен, что означает, что любой может войти в систему с локальным доменом и соответствующим именем пользователя. - person Ankit Vora; 10.09.2018
comment
Вы можете использовать WindowsIdentity.GetCurrent(), там у вас есть доменное имя - person jgauffin; 10.09.2018

Пожалуйста, перейдите по следующей ссылке, чтобы применить аутентификацию Windows во внутренней сети:

http://msdn.microsoft.com/library/bb882216.aspx

person Shivkant    schedule 16.03.2011