Веб-страница Asp.net с проверкой подлинности Windows против Active Directory

Я возился с этим всю ночь, и это действительно расстраивает. Наконец-то я отобразил веб-страницу, но по какой-то причине она не работает, а это означает, что она возвращает меня на мою страницу с ошибкой и сообщает: «Не удалось аутентифицировать пользователя, попробуйте еще раз!». Я не могу понять это, так как это прекрасно работает на моем локальном компьютере, на котором установлены визуальные студии.

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

Class.cs

public bool IsUserInSetup(string groupName, UserPrincipal user)
    {
        PrincipalContext context = new PrincipalContext(ContextType.Domain, "DomainName");
       GroupPrincipal group = GroupPrincipal.FindByIdentity(context, "GroupName");

        if (user.IsMemberOf(group))
        {
            return true;
        }
        return false;
    }

Аутентификация.aspx.cs

 if (!IsPostBack)
            {
                if (Request.IsAuthenticated)
                {

                    if (gv.IsUserInSetup("GroupName", user))
                    {
                        Session["userValue"] = UserPrincipal.Current;

                        Response.Redirect("Default.aspx");

                    }
 else
                {
                    lblInfo.Text = "Could Not Authenticate User Please Try Again!";
                    lblInfo.Text += "<br><b>Name: </b>" + User.Identity.Name;
                    lblInfo.Text += "<br><b>Authenticated With: </b>";
                    lblInfo.Text += User.Identity.AuthenticationType;
                }

person Henry    schedule 06.04.2013    source источник


Ответы (2)


Одной из возможных причин сбоя приложения при развертывании в IIS является то, что учетная запись, под которой вы настроили его запуск, не имеет достаточных привилегий для доступа к серверу Active Directory. По умолчанию пул приложений в IIS запускается под встроенной учетной записью ApplicationPoolIdentity, которая является локальной для учетной записи сервера. Вам следует зайти в настройки пула приложений в IIS и выбрать доменную учетную запись с достаточными привилегиями.

Это работает при локальном запуске в VS, потому что вы запускаете свое приложение со своей учетной записью, которая, вероятно, является учетной записью домена с доступом к Active Directory.

person Darin Dimitrov    schedule 07.04.2013
comment
Спасибо за ответ. Я создал пул приложений и использовал учетные данные Domain\Admin, и все та же история. Я заметил, что если у меня не включено олицетворение, я получаю следующую ошибку? Невозможно привести объект типа «System.DirectoryServices.AccountManagement.GroupPrincipal» к типу «System.DirectoryServices.AccountManagement.UserPrincipal». - person Henry; 07.04.2013

Получил ответ на другом форуме, но я делал много дополнительной работы без всякой причины. В Asp.net есть USER.ISINROLE("GROUPNAME"), и я использовал это.

person Henry    schedule 07.04.2013