2016-09-30 6 views
0

.Net Framework 4.0에서 Default.aspx 페이지로 테스트 웹 응용 프로그램을 만들었습니다. 나는 뒤에 default.aspx에 코드에서 코드를 다음하지만 빈 값을 받고 쓴, 그래서 내가 눌러 F5를 응용 프로그램을 실행할 때 난 그냥 사용자의 O 액세스 네트워크 ID를 원하는 : asp.net 4.0의 네트워크 ID에 액세스하는 방법

string username = Page.User.Identity.Name; 

와의 Web.config에서

윈도우 인증 모드를 사용 :
<authentication mode="Windows" /> 

는 내가 콘솔 응용 프로그램에서 다음과 같은 노력하고 내 네트워크 ID를 얻을 수 있어요 : 내가 웹 응용 프로그램의 모든 구성 단계 누락

Console.WriteLine(Environment.UserName); 

오전.

감사

답변

0

이 나는 ​​사용자 정보를 얻고 또한 너무 AD 그룹을 확인할 것을 사용하여 생산 코드입니다.

클래스를 초기화하고 필요한 방법에 액세스하여 AD \ Network 정보를 반환하는 변수를 만듭니다.

using System.DirectoryServices.AccountManagement; 
using System.Security.Principal; 

public class IsUserInRole 
{ 

public static bool IsInGroup(string groupName) 
{ 
    var myIdentity = GetUserIdWithDomain(); 
    var myPrincipal = new WindowsPrincipal(myIdentity); 
    return myPrincipal.IsInRole(groupName); 
} 


public bool IsInGroup(List<string> groupNames) 
{ 
    var myIdentity = GetUserIdWithDomain(); 
    var myPrincipal = new WindowsPrincipal(myIdentity); 

    if (groupNames.Any(@group => myPrincipal.IsInRole(@group) == true)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 

} 

public static WindowsIdentity GetUserIdWithDomain() 
{ 
    WindowsIdentity myIdentity = WindowsIdentity.GetCurrent(); 
    return myIdentity; 
} 

public static string GetUserId() 
{ 
    var id = GetUserIdWithDomain().Name.ToString().Split("\\"); 
    return id(1); 
} 


public static string GetUserDisplayName() 
{ 
    var id = GetUserIdWithDomain().Name.ToString().Split("\\"); 

    var dc = new PrincipalContext(ContextType.Domain, id(0)); 
    var adUser = UserPrincipal.FindByIdentity(dc, id(1)); 
    return adUser.DisplayName; 

} 


} 

편집 한

귀하의 의견은 당신이 당신의 web.config 파일

<system.web> 
    <identity impersonate="true" /> 
    ... 
    </system.web> 

에 다음을 추가해야합니다 그리고 또한 IIS에서 사이트 \로 이동 반환 사용자를 다시 Gven 응용 프로그램을 누른 다음 권한으로 이동 한 다음 익명 사용자를 사용하지 않도록 설정 ASP.Net 가장 및 Windows 인증 사용

enter image description here

편집이 액세스를 위해 도전하고 이것이 당신이 올바른 권한을

+0

내가 Page_Load 이벤트 '을 Response.Write ("사용자 이름"에서 행 다음에 쓴 설정이없는 것을 의미

+ WindowsIdentity.GetCurrent(). Name); ' IIS에서 호스트 된 웹 사이트. 사용자 이름 : IIS APPPOOL \ TestWeb 대신 도메인 이름과 네트워크 ID가 표시되어야합니다. 예 : 사용자 이름 : mydomain \ mynetowrkid – Sukhjeevan

+0

ok, 무엇을 제공 했습니까? 또한 IIS 설정에서 사이트의 사용자 인증을 다시합니다. 익명 인증 장애인 ASP.NET 가장 장애인 양식 인증 장애인 Windows 인증 지금 와의 web.config의 <인증 모드 = "윈도우"/> 를 사용이 후 –

+0

내가 IIS에서 다음 않았다 Windows 인증을 얻기 위해 웹 사이트를 탐색하면 Windows 보안 팝업 창이 나타나고 Windows 자격 증명을 요청합니다. 사용자 이름 : 사용자 도메인 \ mynetworkid 비밀번호 : 내 창 메시지 다음과 같은 세부 사항을 로그인하지만 이동과 나는 시도 내 Windows 암호 HTTP 오류 401.1 - 웹 응용 프로그램이 서버에 개최되는 위치 – Sukhjeevan