NT аутентификация на домене в ASP.NET веб-сайте 2.0 - PullRequest
1 голос
/ 20 июня 2011

Привет, я хотел бы использовать аутентификацию Window NT на домене на веб-сайте ASP.NET 2.0.

Я хотел бы принудительно ввести учетные данные пользователя при первом посещении моего веб-сайта. Веб-сайт будет использоваться только в интрасети.

Я знаю, что домен находится в формате x.y.com.

Я добавляю в элемент web.confing:

<authentication mode="Windows"/>

Моя первая проблема:

  1. Но я не могу показать классическое окно формуляр для ввода учетных данных пользователя, когда пользователь посещает веб-сайт.

Я имею в виду эту форму:

http://blumenthalit.net/blog/Lists/Posts/Attachments/54/image_2.png

2 И вторая проблема - аутентификация на домене. Я использую Google, и у меня работает только этот код.

public class WinAPI
{
    // Use NTLM security provider to check
    public const int LOGON32_PROVIDER_DEFAULT = 0x0;
    // To validate the account
    public const int LOGON32_LOGON_NETWORK = 0x3;

    // API declaration for validating user credentials
    [DllImport("advapi32.dll", SetLastError = true)]
    public static extern bool LogonUser(string lpszUsername, string lpszDomain, 
        string lpszPassword, int dwLogonType, int dwLogonProvider, out int phToken);
    //API to close the credential token
    [DllImport("kernel32", EntryPoint = "CloseHandle")]
    public static extern long CloseHandle(long hObject);
};




   int hToken = 2;
        bool ret = WinAPI.LogonUser("userName", "domain.example.com", "password", WinAPI.LOGON32_LOGON_NETWORK,
        WinAPI.LOGON32_PROVIDER_DEFAULT,
        out hToken);

        if (ret == true)
        {
            MessageBox.Show(" Valid Windows domain User ");
            WinAPI.CloseHandle(hToken);
        }
        else
        {
            MessageBox.Show(" Not an valid Windows domain User ");
        }

Ответы [ 3 ]

1 голос
/ 21 июня 2011

Суть проверки подлинности Windows для интрасетей заключается в том, что поле входа в систему не отображается , пользователи автоматически проходят проверку подлинности, используя свои учетные данные домена.С какой стати вы хотите заставить пользователей вводить свои имя пользователя и пароль, возможно, в виде простого текста, если вы не собираетесь устанавливать SSL-сертификат, а затем пытаться выдавать себя за них вручную?

Единственный способсделать то, что вы хотите, - включить базовую аутентификацию в IIS (инструкции для IIS7 / IIS6 ).Однако, если вы делаете это, вам нужен сертификат SSL для защиты имен пользователей и паролей при передаче.Я настоятельно рекомендую вам не идти по этому пути.

1 голос
/ 21 июня 2011

Я бы добавил к ответу @ blowdart, что вы также можете использовать аутентификацию форм вместе с LdapMembershipProvider для аутентификации в Active Directory.

0 голосов
/ 21 июня 2011

Попробуйте прочитать эту ссылку, она должна рассказать вам, как запретить доступ анонимным пользователям, поэтому вы должны получить всплывающее окно.

http://weblogs.asp.net/scottgu/archive/2006/07/12/Recipe_3A00_-Enabling-Windows-Authentication-within-an-Intranet-ASP.NET-Web-application.aspx

 <configuration>
    <system.web>
        <authentication mode="Windows" />
         <authorization>
             <deny users="?"/>
          </authorization>
    </system.web>
</configuration>

Note that the <deny users=”?”/> directive within the <authorization> section above is what tells ASP.NET to deny access to the application to all “anonymous” users to the site (the “?” character means anonymous user).  This forces Windows to authenticate the user, and ensures that the username is always available from code on the server.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...