2011-10-04 6 views
0

SSL로 보호 된 서비스에 대한 표준 인증 설정에 대해 혼란스러워합니다. HTTP header way을 시도했지만 비표준이며 WS-I는 저에게 중요합니다. 방법 수준에서 을 Username으로 설정할 수 있습니다. 이렇게하여 WSIT XML의 BindingPolicy 결과입니다 :SSL로 보호 된 WSIT/Metro 웹 서비스 및 클라이언트에 대한 인증 설정

<wsp:Policy wsu:Id="DataStoreWSPortBindingPolicy"> 
    <wsp:ExactlyOne> 
     <wsp:All> 
      <wsam:Addressing wsp:Optional="false"/> 
      <sp:TransportBinding> 
       <wsp:Policy> 
        <sp:TransportToken> 
         <wsp:Policy> 
          <sp:HttpsToken RequireClientCertificate="false"/> 
         </wsp:Policy> 
        </sp:TransportToken> 
        <sp:Layout> 
         <wsp:Policy> 
          <sp:Lax/> 
         </wsp:Policy> 
        </sp:Layout> 
        <sp:IncludeTimestamp/> 
        <sp:AlgorithmSuite> 
         <wsp:Policy> 
          <sp:Basic128/> 
         </wsp:Policy> 
        </sp:AlgorithmSuite> 
       </wsp:Policy> 
      </sp:TransportBinding> 
      <sp:Wss10/> 
     </wsp:All> 
    </wsp:ExactlyOne> 
</wsp:Policy> 
<wsp:Policy wsu:Id="DataStoreWSPortBinding_hello_Input_Policy"> 
    <wsp:ExactlyOne> 
     <wsp:All> 
      <sp:SupportingTokens> 
       <wsp:Policy> 
        <sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"> 
         <wsp:Policy> 
          <sp:WssUsernameToken10/> 
         </wsp:Policy> 
        </sp:UsernameToken> 
       </wsp:Policy> 
      </sp:SupportingTokens> 
     </wsp:All> 
    </wsp:ExactlyOne> 
</wsp:Policy> 

는 svcutil 경고 : 내가 ClientCredentials를 통해 WCF 클라이언트의 자격 증명을 설정 한 후 데이터베이스를 통해 서비스 측면에서 인증 할

<!-- WsdlImporter encountered unrecognized policy assertions in ServiceDescription 'http://webServices/': --> 
      <!-- <wsdl:binding name='DataStoreWSPortBinding'> --> 
      <!--  <sp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">..</sp:SupportingTokens> --> 

. 이를 달성하기위한 단계는 무엇입니까?

답변

1

전송 방식에 표준 방식을 사용하려는 경우 HTTP 기본 인증을 사용하지 않는 이유는 무엇입니까? 이것이 HTTP 프로토콜에 대한 일반적인 표준화 된 인증 메커니즘이며 웹 서비스에서도 작동합니다.

오류는 아마도 SupportingTokens 어설 션 때문에 발생했습니다. 심지어 WCF가 그것을 지원하지 않는다는 것은 올바른 주장이다. SignedSupportingTokens 또는 SignedEncryptedSupportingTokens을 사용해보십시오. 그러한 WSDL을 생성하기 위해 서비스를 수정할 수 없다면 수동으로 얻은 WSDL을 수정 해보십시오.

WS-I의 의미는 무엇입니까? 여러 WS-I 표준이 있으며 그 중 일부는 정책을 전혀 기대하지 않습니다. 헤더가 WSDL로 직접 설명되는 단순한 SOAP 서비스입니다.

+0

나에게가는 길을 보여 주셔서 감사합니다. 여기에 'WS-I'라는 용어를 사용하는 것은 부적절했지만 가능한 가장 표준적인 방법을 구현하여 상호 운용성을 극대화하고자했습니다. 나는 서비스 수준에서 설정할 수있는 것을 기대했지만 대신 서버에서 HTTP 기본 인증을 설정해야합니다. 또한 Object Database를 사용하고 있기 때문에 GlassFish가 작동하도록 사용자 정의 영역을 만들어야 할 것입니다. 이 기능을 간단하게 개발할 때 오버 헤드가됩니다. –