문제

자체 작업 그룹에 사는 서버에서 WCF 서비스를 설정했습니다. 회사 도메인에 사는 클라이언트로부터 TCP/IP 연결을 만들려고 노력했습니다. 연결을 열려고하면 메시지와 함께 SecurityNegotiationException을 얻습니다.

"인증 중에 원격 측면 보안 요구 사항이 충족되지 않았습니다. ProtectionLevel 및/또는 가장을 증가시켜보십시오." 내부 예외는 다음과 같이 읽습니다. "네트워크 로그온 실패"

일부 동료들과 문제에 대해 이야기하고 일부 Google 연구를 수행 한 후, 문제는 클라이언트가 회사 네트워크 로그인 및 비밀번호를 사용하여 서버에 로그온하려고한다는 결론에 도달했습니다. 서버는 회사 네트워크의 일부가 아니기 때문에 회사 신원에 대한 지식이없고 로그인 / 연결 시도를 거부합니다. 이 분석이 정확한지 여부에 관계없이 전혀 모릅니다.

Google 결과는 아마도 솔루션이 서버 시스템에 존재하는 사용자 계정을 가장해야한다고 제안하는 것 같습니다. -나는 또한이 코드 리젝트 기사를 우연히 발견하여 사용자 가장을 보여줍니다. 서버의 유일한 계정은 비밀번호가없는 관리자이므로 컴퓨터의 IP 주소로 도메인을 "10.0.0.11", 사용자 이름으로 "관리자"로, 암호로 "" "를 시도했습니다.http://www.codeproject.com/kb/dotnet/userimpersonationinnet.aspx?display=print불행히도 메시지와 관련하여 실패합니다.

"로그온 실패 : 알 수없는 사용자 이름 또는 나쁜 비밀번호"

문제에 대한 또 다른 힌트 : 클라이언트와 서버가 회사 네트워크의 기계 인 경우 연결 문제가 전혀 없습니다.

오류를 해결하고 서버에 대한 연결을 완료하려면 어떻게해야합니까? 모범 사례는 아니지만 보안을 제거해도 완전히 괜찮 으므로이 프로젝트를 계속 발전시킬 수 있습니다.

도움이 되었습니까?

해결책

세부 사항을 파악할 때까지 배우는 가장 좋은 방법은 보안을 비활성화하는 것입니다. 보안 모드가 "없음"으로 설정된 서버 측에서 새 바인딩 구성을 만들어야합니다. 편의를 위해 "Nosecurity"로 지정하십시오. 이 구성은 엔드 포인트에서 사용하는 동일한 유형 (WSHTTPBinding 등)을 가져야합니다. 그런 다음 엔드 포인트의 BindingConfiguration 속성을 "Nosecurity"로 설정하십시오.

클라이언트 구성을 업데이트하면 설정이 설정됩니다.

다른 팁

나는 작업 그룹에 도메인을 신뢰할 수있는 방법이 없다는 것을 알고 있습니다.

  1. HTTP (웹 서비스 엔드 포인트)를 사용하는 WCF 서비스에 다른 엔드 포인트를 추가하고 도메인에서이를 사용하십시오. 이는 여기에서 가장하거나 작업 그룹 서버에서 제품에 액세스 할 수있는 특정 사용자를 설정할 수 있으므로 보안 문제를 해결합니다.

  2. WCF 서비스의 보안을 낮추십시오. 나는 이것을하는 방법에 대해 생각해야하지만 어쨌든 좋은 생각은 아닙니다.

  3. 도메인을 만들고 신뢰 관계를 얻으십시오.

당신이 언급 한 코드 프로젝트는이 코드를 누르기 전에 인증이 이루어 지므로 WCF에 직접 유용한 방식으로 가장하는 사람을 다루지 않습니다. 나는 당신이 프레임 워크 비트에 걸릴 수 있다고 생각하지만, 그것은 불쾌 할 것입니다. HTTP 엔드 포인트에서 코드를 사용하는 방법이있을 수 있지만 Windows 보안을 우회하는 코드를 추가하는 오버 헤드를 발생시키지 않으면 서 이미 수행 할 수 있습니다.

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