0

domain \ user 및 일반 텍스트 암호와 같은 일부 사용자 자격 증명이있는 클라이언트 콘솔 응용 프로그램이 있습니다. 클라이언트 응용 프로그램은 LogonUser (dwLogonType : LOGON32_LOGON_NETWORK) win32 API를 호출하여 해당 사용자에 대한 windowsidentity 객체를 가져옵니다. WCF 서비스 호출 (다른 컴퓨터에서 호스팅 됨)을 가장하고 만들려면 windowsidentity를 사용합니다. WCF 서비스는 Windows 통합 보안이있는 TCP 프로토콜을 사용하도록 구성됩니다. 오류로 인해 SecurityNegotiation 예외가 발생하여 호출이 실패합니다. 원격 서버가 상호 인증 요구 사항을 충족하지 못했습니다.서버 서비스 계정에 대해 Windows 위임을 사용하도록 설정해야합니까?

내 가정은 Windows 통합 인증을 사용하도록 끝점을 구성했기 때문에 서버가 거부하는 익명 클라이언트 ID를 확인한다는 것입니다. 내 생각 엔 Windows 위임에 서버 계정을 설정해야한다는 것입니다. 내 추측이 맞습니까? 또한

,

  1. 는 dwLogonType = LOGON32_LOGON_NETWORK의 내 선택이 맞습니까?
  2. LogOnUser (dwLogonType = LOGON32_LOGON_NETWORK)가 반환 한 토큰을 원격 WCF 호출에 사용할 수 있습니까?
+1

'LOGON32_LOGON_NETWORK'은 (는) 다른 서버에 대한 액세스 권한을 부여하지 않습니다. 'LOGON32_LOGON_NETWORK_CLEARTEXT'는 않습니다. – arx

답변

1

가장하는 사람은 사용자 신원에 따라 네트워크 리소스에 액세스하려면 위임 권한이 있어야합니다. 위에서 언급 한 시나리오에서 클라이언트가 실행중인 클라이언트 계정은 일부 사용자로 가장하여 원격 WCF 서비스에 사용자 ID를 전파하려고하기 때문에 위임 권한이 있어야합니다. dwLogonType = LOGON32_LOGON_NETWORK의 옵션을

Can the token returned by LogOnUser (dwLogonType = LOGON32_LOGON_NETWORK) be used for making remote WCF calls?

Is my choice of dwLogonType = LOGON32_LOGON_NETWORK correct?

번호, LogonUser는 네트워크 리소스에 사용자 ID를 전파하면서 사용할 수 없습니다 토큰을 반환합니다.

LogonUser 옵션으로 dwLogonType = LOGON32_LOGON_NETWORK_CLEARTEXT 옵션이 문제를 해결했습니다. 이 옵션을 사용하면 LogonUser가 사용자의 신원에 따라 네트워크 리소스에 액세스 할 수있는 토큰을 생성했습니다.

내 해결책으로 arx에 대한 공로를 인정합니다. 문제를 해결할 수있는 것은 그의 의견에 불과합니다.