2016-09-08 5 views
0

У меня есть одностраничное приложение, работающее в нашей интрасети. Пользователи аутентифицируются с помощью проверки подлинности Windows (их домен-пользователь). При нажатии кнопки я хочу, чтобы послать запрос (используя $ HTTP, угловой) к ASPX-странице, которая имеет следующий код:Как получить имя пользователя, прошедшего проверку подлинности Windows, в asp.net?

 string result = "Unknown"; 
     var loggedOnUser = System.Security.Principal.WindowsIdentity.GetCurrent(); 
     if (loggedOnUser != null) { 
      int index = loggedOnUser.Name.LastIndexOf("\\", StringComparison.Ordinal) + 1; 
      result = loggedOnUser.Name.Substring(index); 
     } 
     var json = "{ \"User\" : \"" + result + "\"}"; 
     Response.Clear(); 
     Response.ContentType = "text/json"; 
     Response.Write(json); 
     Response.End(); 

Этот код только дает мне имя пользователя, который зарегистрирован в Пул приложений. Это не очень удивительно, поэтому я думаю, что мне нужно немного намазать здесь? Причина для этого заключается в том, что я хочу, чтобы имя пользователя было в моем javascript, чтобы оно могло быть отправлено в качестве параметра в других вызовах сервера. Я искал в Интернете, и все говорят, что получение имени пользователя, зарегистрированного в сети, является серьезным нарушением безопасности. И я это вижу. Но, может быть, это может быть обходным путем, когда это делается так, что это связано с кодом сервера?

Любые предложения?

Спасибо!

+0

Если вы отправляете имя в качестве параметра в других вызовах, что там, чтобы остановить образованный пользователю заменить, что имя с кем-то еще? Ваша аутентификация должна произойти при каждом вызове. –

+0

И на второй ноте, каковы настройки аутентификации вашего сайта? Вы разрешаете анонимный аут? –

+0

Это приложение Intranet с пользователями с хорошими настройками, поэтому безопасность не является проблемой. Я могу попросить пользователя ввести имя домена или создать форму входа или что-то подобное, и проблема будет решена. Я просто хочу облегчить работу своих коллег, чтобы они вошли в систему с учетной записью пользователя Windows-домена. Аутентификация Windows установлена ​​в IIS. Анонимный доступ до сих пор не разрешен. Я возьму любой взлом, который работает нормально, ведь все это внутреннее и за брандмауэрами. –

ответ

1

я получил, как это на Login мыши

protected void btnLogin_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      string UserName = ""; 
      string activeDomain = System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString(); 
      string strName = HttpContext.Current.User.Identity.Name.ToString(); 


      if (strName == "") 
      { 
       UserName = activeDomain; 
      } 
      else 
      { 
       UserName = strName; 
      } 

      if (UserName == "") 
      { 
       lblMsg.Text = "Invalid Credentials. Please contact administrator!"; 
      } 
      else 
      { 
       LP.UserName = UserName; 
       DataSet dsUserName = LBLL.validate_user(LP); 
       if (dsUserName.Tables[0].Rows.Count > 0) 
       { 
        Session["UserName"] = dsUserName.Tables[0].Rows[0]["userName"].ToString(); 
        Session["entityUID"] = dsUserName.Tables[0].Rows[0]["entityUID"].ToString(); 
        Response.Redirect("~/index.aspx", false); 
       } 
       else 
       { 
        lblMsg.Text = "Invalid Credentials. Please contact administrator!"; 
       } 
      } 
     } 
     catch (Exception ex) 
     { 

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

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