2012-04-05 3 views
2

인터페이스에 ServiceContract 및 모든 방법에 대해 OperationContract 인 인터페이스를 만들었습니다. 클래스에서이 인터페이스를 구현 한 다음 asp.net 웹 사이트에서 svc 파일을 만든 wcf 서비스를 추가했습니다 (내 웹 사이트의 IIS에서 호스팅하기 때문에). 이제 서비스는 올라와서 http://localhost:8732/webui/webservice/camservice.svc에서 액세스 할 수 있습니다. 이제이 서비스에 대한 사용자 이름과 암호 인증을 사용하고 싶습니다. 나는 svcbasicHttpBinding을 사용한다고 가정합니다. web.config를 실행하도록 구성 할 필요가 없었기 때문입니다. 이제이 서비스에서 사용자 이름/암호 인증을 어떻게 사용할 수 있습니까? 인터넷에 기사가 많이 있지만, wcf 보안은 내가 사용했던 방법으로 사용자 이름/암호 인증에 대한 집중된 설명을 얻을 수없는 거대한 규모라고 생각합니다. .net 4.0 with vs 2010을 사용 중입니다.wcf basichttpBinding을 사용한 사용자 이름 및 암호 보안 - 메시지 기반

편집 : 그래, 문제가 조금 좁혀졌습니다. 나는 메시지 수준의 보안은 내가

<security mode="Message"> 
       <message clientCredentialType="Certificate" /> 
      </security> 

처럼 내가 SSL을 위해 갈 수 있지만, 나는 각 서비스 호출에 대한 DB 및 사용자를 인증하기 위해 이동해야합니다 필요하다 생각합니다. 내가 선호하는 것은 유효한 인증서를 가진 클라이언트가 서비스에 의해 제공된다는 것입니다. this article에서 많은 정보를 얻었습니다. 설명되지 않은 것은 클라이언트와 서버에 x509 인증서를 설치하는 방법과 내 클라이언트 만 유효한 인증서를 얻을 수 있도록 제어 할 수있는 방법입니다.

+0

예 WCF 보안은 거대하고 안전한 서비스를 만들려면 최소한 기본 사항 만 배우면됩니다. 예를 들어, 어떤 종류의 보안 서비스를 기대하십니까? 사용자 이름과 패스워드를 어떻게 전송해야합니까? 비밀번호는 어떻게 보호해야합니까? –

+0

Ladislav 사용자 이름과 암호 보안을 사용하고 싶습니다. ''은 ssl의 사용을 강제합니다. 하지만 나는 두 번째 단계에서 SSL로 이동하지 않을 것입니다. 있음, 첫 번째 단계는 난 그냥 설치 사용자 이름과 비밀 번호를 클라이언트에 의해 메시지 헤더에 추가하고 서버에서 제대로 인증 싶어요. 저에게 그렇게 할 수있는 보안 모드가 있습니까? –

답변

4

SSL없이 사용자 이름 암호 유효성 검사를 수행하려면 http를 통해 사용자 이름/암호를 전송할 수있는 ClearUsernameBinding이라는 항목을 사용할 수 있습니다.

참고 : 서비스를 호스팅하는 서버에 충분한 보안을 제공하는 회사 방화벽 뒤에 서비스가있는 경우에만 사용하십시오.

양방향 SSL을 사용하려면 로컬 컴퓨터 계정의 개인 저장소 폴더에서 신뢰할 수있는 기관 또는 자체 서명 된 인증서로 발급 된 서버에 서비스 인증서 .pfx를 설치해야합니다.

클라이언트 인증서의 경우 .cer 파일을 보내 로컬 컴퓨터 계정의 신뢰할 수있는 사용자 저장소 폴더 아래 서버에 설치하도록 클라이언트에 요청해야합니다.

클라이언트 컴퓨터에서 현재 사용자의 개인 저장소 폴더 아래에 클라이언트 인증서 .pfx를 설치해야합니다.

참고 :

: 다음 서버에 코드를 통해 웹 서비스를 호출 자체 서명 된 인증서를 위해 제공되는 보안 예외를 우회하는 아래의 코드를 가질 필요가 수행하는 클라이언트를 자체 서명 된 인증서를 사용하는 경우
System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) => 
                      { 
                       return true; 
                      }; 
관련 문제