Considerazioni sulla protezione per le sessioni protette
Si consiglia di considerare gli elementi seguenti che influiscono sulla sicurezza durante l'implementazione di sessioni protette. Per altre informazioni sulle considerazioni sulla sicurezza, vedere Considerazioni sulla sicurezza e Procedure consigliate per la sicurezza.
Sessioni protette e metadati
Quando si stabilisce una sessione sicura e si imposta la proprietà RequireCancellation su false
, WCF (Windows Communication Foundation) invia un'asserzione mssp:MustNotSendCancel
come parte dei metadati nel documento WSDL (Web Services Description Language) relativo all'endpoint del servizio. L'asserzione mssp:MustNotSendCancel
informa i client che il servizio non risponde alle richieste di annullare la sessione protetta. Quando la proprietà RequireCancellation è impostata su true
, WCF non genera l'asserzione mssp:MustNotSendCancel
nel documento WSDL. Si prevede che i client inviino una richiesta di annullamento al servizio quando la sessione protetta non è più necessaria. Quando un client viene generato usando lo strumento ServiceModel Metadata Utility (Svcutil.exe), il codice client reagisce in modo appropriato alla presenza o all'assenza dell'asserzione mssp:MustNotSendCancel
.
Conversazioni protette e token personalizzati
Si sono verificati problemi nella combinazione di token personalizzati e chiavi derivate a causa della modalità di definizione nella specifica WS-SecureConversation. Nella specifica viene indicato che wsse:SecurityTokenReference
è un elemento facoltativo che fa riferimento al token derivato. Viene spiegato che /wsc:DerivedKeyToken/wsse:SecurityTokenReference
è un elemento facoltativo usato per specificare il token del contesto di sicurezza, il token di sicurezza, la chiave condivisa o il segreto usato per la derivazione. Se non è specificata, si presume che il destinatario possa determinare la chiave condivisa dal contesto del messaggio. Se non è possibile determinare il contesto, è possibile che sia stato generato un errore come wsc:UnknownDerivationSource
.
Ciò significa che se si desidera derivare un token personalizzato, è necessario eseguire il wrapping del relativo tipo di clausola in un elemento SecurityTokenReference
. Benché sia disponibile un'opzione per disattivare la derivazione, per impostazione predefinita le chiavi vengono derivate. Se non è possibile eseguire il wrapping della chiave, la serializzazione del token della chiave derivata viene completata correttamente, ma il tentativo di deserializzazione genera un'eccezione.