Visualizzazione dei risultati da 1 a 10 su 28

Visualizzazione discussione

  1. #15
    Quote Originariamente inviata da mmjc23 Visualizza il messaggio
    Ciao sspintux
    Ti dirò...io ho provato a dare un'occhiata al link che mi hai postato, ma non c'ho capito una mazza...
    ....
    Alla fine, la botta di ( | )...da un post di un Forum che avevo già letto ma che non riuscivo ad utilizzare...
    .......

    Non mi rimane che capire come modificare l'app.config runtime in base a EndPoint e Username/Password letti da file config XML.
    Ciao,
    a me sembra che tu stia girando intorno al problema riuscendo ogni volta a creartene uno nuovo;
    tra parentesi incomincio ad avere il sospetto che anche la deserializzazione a manina dell'errore sia inutile.

    Non ho provato , ma questo è un custom binging che dovrebbe andare bene nel tuo caso
    visto che usi https:
    codice:
    <bindings>
      <customBinding>
     <binding name="CustomSoapBinding">
       <security includeTimestamp="false"
        authenticationMode="UserNameOverTransport"
        defaultAlgorithmSuite="Basic256"
        requireDerivedKeys="false"
        messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
       </security>
       <textMessageEncoding messageVersion="Soap11"></textMessageEncoding>
       <httpsTransport />
     </binding>
      </customBinding>
    </bindings>
    username e password li imposti con un codice tipo questo :
    codice:
    var proxy = new ServiceRef.ServizioClient();
    proxy.ClientCredentials.UserName.UserName = "user";
    proxy.ClientCredentials.UserName.Password = "Password";
    Non funzionerebbe con il protocollo http perché per impostazione predefinita WCF
    non permette l'invio di username e password in chiaro senza una qualche forma di protezione,
    motivo per cui ti avevo suggerito il punto 2) che funziona anche in questo caso e che , sempre senza aver provato e senza controllo errori, suona più o meno così:

    codice:
    using (var proxy = new ServiceRef.ServizioClient())
    {
     using (new OperationContextScope(proxy.InnerChannel))
     {
      string headerText =
         "<wsse:UsernameToken  xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"> " +
         "<wsse:Username>{0}</wsse:Username> " +
         "<wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">{1}</wsse:Password> " +
         "</wsse:UsernameToken> ";
    
    
      headerText = string.Format(headerText, "user", "pwd");
    
    
      XmlDocument MyDoc = new XmlDocument();
      MyDoc.LoadXml(headerText);
      XmlElement myElement = MyDoc.DocumentElement;
    
    
      System.ServiceModel.Channels.MessageHeader myHeader = MessageHeader.CreateHeader("Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", myElement, true);
      OperationContext.Current.OutgoingMessageHeaders.Add(myHeader);
    
    ....
    
    }
    Se non dovesse funzionare o se occorre un maggior controllo su come formare l'header di sicurezza
    si può fare una cosa del genere :
    codice:
    using (var proxy = new ServiceRef.ServizioClient())
    {
     using (new OperationContextScope(proxy.InnerChannel))
     {
      var sh = new ClientSecurityHeader(utente, password);
      OperationContext.Current.OutgoingMessageHeaders.Add(sh);
      ....
     }
    }
    dove ClientSecurityHeader è una classe che eredita da MessageHeader
    ed in cui puoi eseguire l'override dei suoi vari metodi :
    OnWriteHeaderContent, OnWriteStrartHeader .... e compagnia bella.

    .... infine, sicuro che non ti basti questo per risolvere alla radice
    il problema della derializzazione dell'errore ?
    codice:
    // in pseudocodice
    se il tipo della risposta ricevuto è errotype 
       'casta' la risosta in errortype
    altrimenti 
       'castala' in ripostatype

    HTH
    Ultima modifica di sspintux; 15-01-2016 a 10:04

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.