2009-02-10 5 views
1

Как я могу авторизовать клиента (в данном случае клиент является приложением), чтобы использовать веб-службы в .NET,авторизации клиента для веб-сервиса

Например: Я хочу 3-го приложения PARY позвонить но не позволяет другим приложениям в сети вызывать этот метод.

Я хочу избежать авторизации транспортного уровня и использовать авторизацию на основе сообщений.

ответ

1

Вы должны взглянуть на стандарты WS-Security и WS-Policy. Лучший способ заключается в том, чтобы клиентское приложение подписывало все запросы (с закрытым ключом) и проверяло эту подпись на стороне сервера.

Мы используем настройки, как это, со следующими определениями WS-политика в WSDL:

<!--Endpoint Policy--> 
<wsp:Policy wsu:Id="Endpoint_policy" 
      xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
      xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
    <wsp:ExactlyOne> 
    <wsp:All> 

     <sp:AsymmetricBinding 
     xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
     <wsp:Policy> 
      <sp:InitiatorToken> 
      <wsp:Policy> 
       <sp:X509Token 
       sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"> 
       <wsp:Policy> 
        <sp:WssX509V3Token10 /> 
       </wsp:Policy> 
       </sp:X509Token> 
      </wsp:Policy> 
      </sp:InitiatorToken> 

      <sp:RecipientToken> 
      <wsp:Policy> 
       <sp:X509Token 
       sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never"> 
       <wsp:Policy> 
        <sp:WssX509V3Token10 /> 
       </wsp:Policy> 
       </sp:X509Token> 
      </wsp:Policy> 
      </sp:RecipientToken> 

      <sp:AlgorithmSuite> 
      <wsp:Policy> 
       <!-- sp:Basic256/--> 
       <sp:TripleDesRsa15 /> 
      </wsp:Policy> 
      </sp:AlgorithmSuite> 

      <sp:Layout> 
      <wsp:Policy> 
       <sp:Lax /> 
      </wsp:Policy> 
      </sp:Layout> 

     </wsp:Policy> 
     </sp:AsymmetricBinding> 

     <sp:Wss10 
     xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
     <wsp:Policy> 
      <sp:MustSupportRefKeyIdentifier /> 
      <sp:MustSupportRefIssuerSerial /> 
     </wsp:Policy> 
     </sp:Wss10> 

    </wsp:All> 
    </wsp:ExactlyOne> 
</wsp:Policy> 
<!--End of Endpoint Policy--> 

<!--Message Policy1--> 
<wsp:Policy wsu:Id="Sign_message_policy" 
      xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
      xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
    <wsp:ExactlyOne> 
    <wsp:All> 

     <sp:SignedParts 
     xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
     <sp:Body /> 
     </sp:SignedParts> 

    </wsp:All> 
    </wsp:ExactlyOne> 
</wsp:Policy> 

<!--End of Message Policy1--> 

Затем ссылок на эти политики в связывающей части WSDL. Пример:

<binding name="ExampleServiceSOAP" type="foobar:ExampleServicePort"> 
    <!-- WS-Security --> 
    <wsp:PolicyReference URI="#Endpoint_policy" /> 
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
    <operation name="getSomething"> 
     <soap:operation soapAction="getSomething" style="document"/> 
     <input> 
     <!-- WS-Security --> 
     <wsp:PolicyReference URI="#Sign_message_policy" /> 
     <soap:body use="literal"/> 
     </input> 
     <output> 
     <soap:body use="literal"/> 
     </output> 
    </operation> 
    </binding> 
Смежные вопросы