2008-09-10 8 views
8

우리는 자신의 User, Roles 및 Permission 데이터베이스를 관리하는 ASP.NET 응용 프로그램을 가지고 있으며 최근에 Windows 도메인 계정을 보유 할 User 테이블에 필드를 추가했습니다.ASP.NET 응용 프로그램에서 로그인 한 Windows 도메인 계정을 어떻게 구합니까?

나는 사용자가 우리의 응용 프로그램에에에 물리적 로그를하지 않도록 그것을 확인하고 싶은 것이 아니라 자동으로 현재의 Windows 도메인 계정 도메인 \ 사용자 이름 로그인을 기반으로 기록 될 것이다. 우리는 우리 자신의 User 테이블에 대해 Windows 도메인 계정을 인증하려고합니다.

Windows Forms에서 수행 할 수있는 케이크 조각입니다. Web Forms에서이 작업을 수행 할 수 있습니까?

내가 사용자가 Windows 도전 스크린 메시지를 표시하지 않으, 나는에 로그를 처리 할 수있는 우리의 시스템을 원하는

명확한 설명을 :. 우리는 우리 자신의 사용자 정의 교장 객체를 사용하고 있습니다.

명확화 : 차이가 있는지 없는지는 잘 모르지만 IIS7을 사용하고 있습니다.

+0

는 ... 문제는 내가 정의 사용자 개체를 사용하고 있습니다. 통합 보안을 사용하려고 시도했지만 사용자가 로그인 및 암호를 입력하라는 메시지가 계속 표시되는 동안 일단 로그인하면 Environment.UserName이 NETWORK SERVICE로 되돌려졌습니다. – mattruma

+0

가장처럼 소리가 비활성화됩니다. 가장은 인증 된 사용자 대신 요청을 실행하도록 ASP.NET에 지시합니다. 이를 사용하지 않으면 ASP.NET은 기본 ASP.NET serviec 계정 (또는 Windows 2003/2008의 NETWORK SERVICE)을 사용하여 요청을 실행합니다. – Chris

+0

나는 아직도 이것을 할 수 없다. 나는 IIS 통합을 시도해 보지도했지만 인터넷 서비스 계정으로 되돌려 놓았다. 사용자가 현재 Windows NT 자격 증명을 기반으로 ** 자동으로 로그인 ** 할 수 있습니까? – mattruma

답변

1

나는 당신이 몇 년 전에하고 싶은 것을 거의 정확하게했다. 코드에 집어 넣을 수있는 이전 직업 이었지만 임에 대한 코드를 찾으려고했습니다.

비록 내가 this article을 나의 출발점으로 사용했지만 기억이납니다. 실제로 LDAP 대 사용자의 확인을 실행할 수 있도록 LDAP 공급자를 설정합니다. LDAP 접근 방식을 시도하는지 확인하는 한 가지. LDAP를 설정하는 설정 파일에서 LDAP가 모두 대문자인지 확인하십시오. 그렇지 않은 경우 해결되지 않습니다.

1
using System.Security.Principal; 
... 
WindowsPrincipal wp = (WindowsPrincipal)HttpContext.Current.User; 

현재 도메인 사용자를 얻으려면. 물론 IIS가 Windows 인증을 처리하도록 설정되어 있는지 확인해야합니다.

1

이 도움이 될 수 있습니다

WindowsIdentity myIdentity = WindowsIdentity.GetCurrent(); 

WindowsPrincipal myPrincipal = new WindowsPrincipal(myIdentity); 

string name = myPrincipal.Identity.Name; 
string authType = myPrincipal.Identity.AuthenticationType; 
string isAuth = myPrincipal.Identity.IsAuthenticated.ToString(); 

string identName = myIdentity.Name; 
string identType = myIdentity.AuthenticationType; 
string identIsAuth = myIdentity.IsAuthenticated.ToString(); 
string iSAnon = myIdentity.IsAnonymous.ToString(); 
string isG = myIdentity.IsGuest.ToString(); 
string isSys = myIdentity.IsSystem.ToString(); 
string token = myIdentity.Token.ToString(); 

면책 조항 : 나는 TechNet 문서에서이있어,하지만 난 링크를 찾을 수 없습니다.

+0

사용자 정의 Principal 및 Identity 객체를 사용하고 있습니다. – mattruma

0

System.Threading.Thread.CurrentPrincipal을 사용할 수 있습니다.

+0

사용자 정의 Principal 및 Identity 객체를 사용하고 있습니다. – mattruma

+0

이것이 왜 도움이되지 않습니까? CurrentPrincipal이 사용자 지정 주체 개체를 반환합니다 ... –

+0

내 사용자 지정 사용자에게 Windows 계정 정보가 없습니다. – mattruma

0

에서 Request.ServerVariables [ "REMOTE_USER"]

이것은 당신의 설정에 확인되지 않은,하지만 난 잠시 뒤이를 사용하여 기억합니다.

2

이 종류의 통합은 서버 수준에서 사용자가 로그인하지 않았 음을 결정하는 IIS입니다. 브라우저가 반응하는 사용자에게 인증 프롬프트를 다시 보내는 IIS입니다.

도메인 로그인을 사용하려면이 작업을 수행하는 방법이 하나뿐입니다. integrated windows authentication. 이것은 IIS 서버가 도메인의 일부이고 사용자가 프록시가 아닌 컴퓨터에 직접 액세스하는 경우와 도메인의 일부인 시스템 (적절한 사용자로 로그인 한 경우)에서만 작동합니다.

그러나 사용자 지정 주체 개체는 재미와 게임을 만들 수 있습니다. 이 유형의 인증은 WindowsPrincipal 및 WindowsIdentity가됩니다. 사용자 개체 (How To: Use Windows Authentication in ASP.NET 2.0 참조)를 통해 액세스 할 수 있습니다.

사용자 지정 역할로 인해 사용자 지정 사용자 원을 사용한다고 가정합니까? 두 사람이 멋지게 게임 할 수 있을지 의심 스럽네요. role provider을 만들면 데이터 저장소를 보거나 ADAM을 볼 수 있습니다.이 프로그램은 프로그램별로 역할을 제공하며 훌륭한 관리 도구가 포함되어 있습니다.

0

Try Request.ServerVariables ("LOGON_USER")를 시도하십시오.

이 디렉터리에서 익명 사용자를 허용하지 않도록 디렉터리 보안 옵션을 설정하면 서퍼가이 페이지를 방문 할 때 사용자 이름과 암호를 묻는 표준 모달 대화 상자가 나타납니다. Request.ServerVariables ("LOGON_USER")는 해당 사용자를 반환합니다.

그러나 사용자 지정 보안 개체를 사용하고 있기 때문에이 기능이 작동하지 않을 수 있습니다. 해당 로그온 상자를 둘러 보거나 NT 자격 증명을 요구하기 전에 사이트로 전달하는 방법을 파악할 수 있으면 모든 설정이 완료됩니다.

+0

수정 ... 문제는 내 자신의 주체 개체를 사용하고 싶습니다. – mattruma

0

명의 도용에 대해 생각해 보셨습니까? 사용자의 NT 로그온 자격 증명을 사용자 지정 보안 개체에 저장 한 다음 적절한 경우 코드를 통해 사용자를 impersonation 할 수 있습니다. 나는 이러한 모든 옵션을 시도했습니다

http://msdn.microsoft.com/en-us/library/aa292118(VS.71).aspx