문제

클라이언트 자격 증명을 수신하고 인증 방법을 기반으로 일종의 역할 기반 데이터를 유지 해야하는 WCF 서비스가 있습니다.

클라이언트는 다양한 시스템에 상주 할 것이므로 각 클라이언트에는 고유 한 사용자와 PW가 있습니다.

BasichttpBinding을 사용하고 있으며이 기사와 같은 몇 가지 기사를 읽었습니다.http://nirajrules.wordpress.com/2009/05/22/username-over-https-custombinding-with-wcf%E2%80%99S channelfactory-interface/,이 과정을 설명합니다.

그래서 제가 찾고있는 것은 누군가가 이와 같이 전체 클라이언트/서버를 구성하여 내 자신의 솔루션을 도출 할 수 있도록 구성된 전체 클라이언트/서버가있는 경우입니다.

내가하고 싶은 것은 각 요청에 대한 헤더에 사용자 이름과 비밀번호가 전달되어 실패에 대한 SecurityTokenValidationException을 전달하거나 통과하면 계속되는 것입니다.

감사.

업데이트

클라이언트와 서버 모두에서 다음 구성과 함께 wshttpbinding을 사용하고 있습니다.

  <wsHttpBinding>
    <binding name="wsHttpEndpointBinding" >
      <security mode="TransportWithMessageCredential">
        <transport clientCredentialType="Basic" />
        <message clientCredentialType="UserName" />
      </security>
    </binding>
  </wsHttpBinding>

다음과 같이 클라이언트의 서버로 전화를 걸어요.

ServiceReference1.ServiceClient myClient = new ServiceReference1.ServiceClient();

myClient.ClientCredentials.UserName.UserName = "billuser";
myClient.ClientCredentials.UserName.Password = "mypassword";

Response.Write("Data from WCF Service: " + myClient.GetData(1));

나는 여전히 '... ... 활성화 될 수 없다'고 서버에서 customUsernamepasswordvalidator를 연결하는 데 약간의 손이 필요하다고 생각합니다. 오류.

도움이 되었습니까?

해결책

Basichttpbinding을 사용해야합니까? 그 바인딩은 실제로 레거시 WS-BasicProfile 구현 (IE ASMX)을 지원하기위한 것입니다. 고객이 .NET/WCF 인 경우 WSHTTPBinding을 사용하는 것이 좋습니다. 전송 및/또는 메시지 보안과 함께 인증서, 사용자 이름/비밀번호 등을 사용할 수 있으며 보안 내용을 직접 작성할 필요가 없습니다. 그냥 구성 (CAG).

보안 자격 증명 정보는 코드에서 직접 액세스 해야하는 경우 OperationContext를 통해 서비스 자체에 사용할 수 있습니다. 그러나 코드에 액세스 해야하는 경우, OperationContext에서 관련 정보를 추출하는 동작을 작성하고 시스템을 참조 할 필요가 없도록 더 많은 응용 프로그램에 배치하는 것이 좋습니다. OperationContext에 대한 정보.

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