문제

익명 액세스 비활성화 및 Windows 인증이 활성화 된 통합 모드의 기본 앱 풀의 IIS 7에서 WCF 서비스가 호스트되었습니다.

인터페이스의 메소드 구현에 다음 속성을 넣었습니다.

[OperationBehavior(Impersonation = ImpersonationOption.Required)]

내 서비스에 대한 통화에 네트워크 자격 증명을 공급하지 않으면 다음이 사실이라는 점에서 예상되는 행동을 얻습니다.

ServicesecurityContext.current.windowsIntity.name = mydomain myuser
ServicesecurityContext.current.primaryIdentity.name = mydomain myuser
Thread.currentPrincipal.identity.name = mydomain myuser
SSPI 및 MyDomain MyUser 인증을 사용하여 원격 시스템의 데이터베이스에 연결할 수 있습니다.
WindowsIndity.getCurrent (). name = mydomain myuser
thread.currentprincipal.isinrole ()을 사용하여 사용자가 역할을 수행하는지 확인할 수 있습니다.
windowsidentity.getCurrent (). 그룹을 사용하여 사용자의 그룹 목록을 검색 할 수 있습니다.

그러나 다음을 사용하여 네트워크 자격 증명을 제공하는 경우.

var networkCredential = new NetworkCredential(user, pwd, dom);
base.ClientCredentials.Windows.ClientCredential = networkCredential;
base.ClientCredentials.Windows.AllowNtlm = true;      
base.ClientCredentials.Windows.AllowedImpersonationLevel 
          = System.Security.Principal.TokenImpersonationLevel.Delegation;

그런 다음 위의 모든 것이 데이터베이스 연결을 제외하고는 동일하며 나열된 그룹 중 두 개는 다릅니다. NT Authority 익명 로그인 사용자를 사용하여 데이터베이스에 대한 연결이 이루어지고 있습니다. NetworkCredentials를 사용하면 사용자는 NT Authority Network Group에 NT Authority Interactive가 아닌 지역 그룹이 제거됩니다.

저의 목표는 NetworkCredential이 전달한 자격 증명을 사용하여 데이터베이스에 연결하는 것입니다. 모든 조언에 감사드립니다.

셰인 홀더

도움이 되었습니까?

해결책

일반적인 더블 홉 문제처럼 들립니다.

나는 당신의 작업 시나리오에서 Kerberos가 기본적으로 사용되고 있으며 원격 서버에서 대표 토큰을 얻을 수 있다고 생각합니다.

두 번째 시나리오에서는 제공된 사용자/패스로 인해 Kerberos를 사용하지 않으며 대표 토큰을 얻는 데 도움이되지 않습니다.

내가 알고있는 원격 서버에서 대표단 토큰을 얻는 유일한 방법은 기본 인증 (SSL 포함), 완전한 통증을 사용하는 것입니다.

자격 증명 더블 홉 문제에 관한 것입니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top