Как получить имя пользователя Windows, прошедшего проверку подлинности в asp.net?

0

У меня есть одностраничное приложение, работающее в нашей интрасети. Пользователи аутентифицируются с помощью проверки подлинности Windows (их домен-пользователь). При нажатии кнопки я хочу отправить запрос (используя $ http, Angular) на страницу aspx, которая имеет следующий код:

        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
    Если вы отправляете имя пользователя в качестве параметра в других вызовах, что может помешать образованному пользователю заменить это имя другим? Ваша аутентификация должна происходить при каждом вызове.
  • 1
    И во-вторых, каковы настройки аутентификации вашего сайта? Вы разрешаете анонимную авторизацию?
Показать ещё 1 комментарий
Теги:
windows-authentication
impersonation

1 ответ

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)
        {

        }
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню