인트라넷에서 실행되는 단일 페이지 응용 프로그램이 있습니다. 사용자는 Windows 인증 (도메인 사용자)에 의해 인증됩니다. 내가 요청을 보낼 버튼을 클릭하면 다음과 같은 코드를 가진 영문 페이지로 ($의 HTTP, 각도를 사용하여) :asp.net에서 windows 인증 된 사용자의 사용자 이름을 얻는 방법은 무엇입니까?
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();
이 코드는 나에게에 등록 된 사용자의 이름을 제공합니다 응용 프로그램 풀. 그다지 놀라운 일이 아니기 때문에 여기에 집중해야 할 필요가 있습니까? 이렇게하는 이유는 자바 스크립트에서 사용자 이름을 사용하여 서버에 대한 다른 호출에서 매개 변수로 보낼 수 있기 때문입니다. 나는 웹을 검색했으며 모두가 로그인 한 사용자 이름을 얻는 것이 큰 보안 침해라고 말합니다. 그리고 저는 그것을 봅니다. 그러나 서버 코드와 관련된 방식으로 완료 될 때 해결 방법이 될 수 있습니까?
제안 사항?
감사합니다. 당신이 다른 호출에서 매개 변수로 사용자 이름을 보내는 경우
에 같이있어? 귀하의 인증은 매 통화마다 발생해야합니다. –
두 번째 메모에서 사이트의 인증 설정은 무엇입니까? 익명의 승인을 허용합니까? –
이것은 보안이 문제가되지 않도록 좋은 의도를 가진 사용자가있는 인트라넷 응용 프로그램입니다. 사용자에게 도메인 사용자 이름을 입력하거나 로그인 양식 또는 이와 유사한 것을 작성하도록 요청할 수 있으며 문제가 해결 될 것입니다. 동료들에게 Windows 도메인 사용자 계정으로 한 번만 로그인하면됩니다. Windows 인증은 IIS에서 설정됩니다. 이제는 익명 액세스가 허용되지 않습니다. 모든 내부 및 방화벽 뒤에서 작동하는 해킹을 수행 할 것입니다. –