이 나는 사용자 정보를 얻고 또한 너무 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 인증 사용
편집이 액세스를 위해 도전하고 이것이 당신이 올바른 권한을
내가 Page_Load 이벤트 '을 Response.Write ("사용자 이름"에서 행 다음에 쓴 설정이없는 것을 의미
+ WindowsIdentity.GetCurrent(). Name); ' IIS에서 호스트 된 웹 사이트. 사용자 이름 : IIS APPPOOL \ TestWeb 대신 도메인 이름과 네트워크 ID가 표시되어야합니다. 예 : 사용자 이름 : mydomain \ mynetowrkid – Sukhjeevan
ok, 무엇을 제공 했습니까? 또한 IIS 설정에서 사이트의 사용자 인증을 다시합니다. 익명 인증 장애인 ASP.NET 가장 장애인 양식 인증 장애인 Windows 인증 지금 와의 web.config의 <인증 모드 = "윈도우"/> 를 사용이 후 –
내가 IIS에서 다음 않았다 Windows 인증을 얻기 위해 웹 사이트를 탐색하면 Windows 보안 팝업 창이 나타나고 Windows 자격 증명을 요청합니다. 사용자 이름 : 사용자 도메인 \ mynetworkid 비밀번호 : 내 창 메시지 다음과 같은 세부 사항을 로그인하지만 이동과 나는 시도 내 Windows 암호 HTTP 오류 401.1 - 웹 응용 프로그램이 서버에 개최되는 위치 – Sukhjeevan