2013-04-06 3 views
0

Я был воюем с этим всю ночь, и это действительно расстраивает. Я получил веб-страницу, чтобы показать, наконец, но по какой-то причине она не работает, что означает, что она возвращает меня на мою страницу с ошибкой и гласит: «Не удалось аутентифицировать пользователя, попробуйте снова!». Я не могу понять это, так как это отлично работает на моей локальной машине, на которой установлены визуальные студии.Asp.net WebPage с Windows Authentication aganst 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; 
    } 

Authentication.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; 
       } 

ответ

0

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

1

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

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

+0

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

Смежные вопросы