2009-07-23 2 views
0

WCF (Named Pipes) (현재는 명명 된 파이프이지만 변경할 수는 있지만 IIS는 사용할 수 없음)와 통신하는 클라이언트/서버 프로젝트가 있습니다. 이 프로젝트는 Active Directory와 통합되어 있습니다.Windows 인증, 사용자 지정 권한, WCF, Active Directory

이 프로그램은 일종의 프록시 역할을하여 일반적으로 권한이없는 사용자에게 권한을 부여합니다. 사용자는 클라이언트를 사용하여 수행 할 작업을 "요청"합니다. 그런 다음 특정 조건이 충족되는 한 서버는 클라이언트에 대한 작업을 수행합니다.

이러한 기준 중 하나는 사용자가이 작업을 요청할 수 있다는 것입니다. 내 WCF 서비스가 사용자의 신원을 보장하고 데이터베이스와 비교하며 작업을 수행하거나 작업을 거부하는 방법이 필요합니다.

Windows 인증을 사용하여 사용자가 그들이 말하는 사람들을 100 % 보장하는 방법은 무엇입니까? 명명 된 파이프에 미리

감사합니다,

답변

0

only allowed type of authentication

마이크는 Windows 인증 (netNamedPipeBinding 아래로 스크롤)입니다. 당신은 당신이 신원을 일단

[OperationBehavior(Impersonation = ImpersonationOption.Required)] 
public string GetData(int value) 
{ 
    return string.Format("Hi, {0}, you have entered: {1}", 
          WindowsIdentity.GetCurrent().Name, value); 
} 

, 당신은 Windows가 제대로이 사용자를 인증하고 당신이 당신의 DB에 무슨에 대한 해당 ID를 확인할 수 있다는 사실을 알고 ... 예를 들어 impersonation declareatively 할 수 있습니다.

+0

가장 (impersonation) 코드가 필요합니까? 실제로 요청한 것과 완전히 다른 사용자로 작업을 수행해야합니다. 계속하기 전에 데이터베이스에 대한 자격 증명을 확인해야합니다. 이게 그렇게 할 수 있을까요? –

+0

발신자의 신원 정보를 얻으려면 가장 만 필요합니다. 가장하지 않고 현재 Windows ID를 얻으면 서비스가 실행되고있는 계정의 ID를 얻게됩니다. 당신은 확인하고, 이름을 얻고 당신의 방법에서 이름을 돌려 줄뿐입니다. 호출자를 가장하는 메소드에서 작업을 수행 할 필요는 없습니다 (실제로는 원하지 않는 것입니다). –