У меня есть одностраничное приложение, работающее в нашей интрасети. Пользователи аутентифицируются с помощью проверки подлинности 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, чтобы оно могло быть отправлено в качестве параметра в других вызовах сервера. Я искал в Интернете, и все говорят, что получение имени пользователя, зарегистрированного в сети, является серьезным нарушением безопасности. И я это вижу. Но, может быть, это может быть обходным путем, когда это делается так, что это связано с кодом сервера?
Любые предложения?
Спасибо!
Если вы отправляете имя в качестве параметра в других вызовах, что там, чтобы остановить образованный пользователю заменить, что имя с кем-то еще? Ваша аутентификация должна произойти при каждом вызове. –
И на второй ноте, каковы настройки аутентификации вашего сайта? Вы разрешаете анонимный аут? –
Это приложение Intranet с пользователями с хорошими настройками, поэтому безопасность не является проблемой. Я могу попросить пользователя ввести имя домена или создать форму входа или что-то подобное, и проблема будет решена. Я просто хочу облегчить работу своих коллег, чтобы они вошли в систему с учетной записью пользователя Windows-домена. Аутентификация Windows установлена в IIS. Анонимный доступ до сих пор не разрешен. Я возьму любой взлом, который работает нормально, ведь все это внутреннее и за брандмауэрами. –