문제

대본:

  • 클라이언트는 LAN에서 웹 서비스를 호출합니다. Webservice A는 "네트워크 서비스"가있는 앱 풀 아래에서 실행 중입니다.
  • WebService A는 일부 작업을 수행하고 WebService B를 호출 할 준비를합니다.
  • Webservice B에는 클라이언트 인증서 (*.cer) 및 SSL이 필요합니다.
  • WebService A는 전용 Windows 2003 서버에 있습니다.
  • 모든 것이 DEV 환경에서 해야하는 그대로 작동하지만 (관리자 권한이있는 개발자는 항상 로컬에 기록됩니다 (놀랍지 않습니다!).
  • 인증서는 디스크에 저장됩니다 C:\MyCertificates\
  • 이 스 니펫으로 DEV에서 런타임에 성공적으로 인증서가 적용됩니다. myWebService.ClientCertificates.Add(new X509Certificate.CreateFromCertFile(certPath));

문제:Webservice A는 WebService B를 호출하고 있으며 반환 된 예외는 다음과 같습니다.

HTTP 상태 403 : Forbidden으로 요청이 실패했습니다

이것은 실제로 인증서가 Webservice B에 요청 된 상태에서 전송되지 않았 음을 의미합니다.

이 인증서를 브라우저에 설치하는 것이 솔루션이 아니라고 가정합니다. 브라우저 설정은 일반적으로 사용자 당이며 웹 서비스가 실행중인 자격 증명을 가진 사용자에게 인증서를 제공해야합니다. (예 : 네트워크 서비스, 시스템 또는 IIS AppPool 설정에있는 모든 것).

의문: 지정된 디렉토리 위치에있는 내 네트워크 서비스 또는 기타 비 사용자 계정에 거주하는 인증서에 대한 액세스 또는 협회를 어떻게 부여하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

이 Microsoft Knowledgebase 기사는 다음과 같습니다.

ASP.NET 웹 응용 프로그램에서 인증을 위해 클라이언트 인증서를 사용하여 웹 서비스를 호출하는 방법 (MS KB901183)

웹 서비스 'a'는 기사에 설명 된대로 웹 서비스를 호출하는 ASP.NET 응용 프로그램이 효과적입니다.

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