Il mantenimento di autenticazione tra un client e il servizio WCF? (Workflow disponibile)
-
11-10-2019 - |
Domanda
Quello che voglio fare è:
1) autenticare il client per la prima chiamata rende al servizio WCF, questo sarà su una base per-utente piuttosto che una base per-applicazione.
2) Controllare il client è autorizzato ad effettuare la chiamata.
3) Per le successive chiamate a solo autorizzare, con autenticazione essendo già stato fatto nel passaggio 1 per una chiamata precedente.
o
Se il client è connesso a una diversa istanza del servizio per un motivo o la "stretta di mano" è rotto a ri-autenticazione.
Spero che questo ha un senso, questo avviene in modo implicito in WCF utilizzando ad esempio nome utente e l'autenticazione e l'autorizzazione password o fare I / c'è un modo per scrivere qualcosa su misura? Essenzialmente questo è per l'efficienza.
Molte grazie, Fugu
Soluzione
Questo è chiamato contesto di sicurezza (o una sessione di sicurezza) ed è possibile con la sicurezza dei messaggi. L'unica limitazione è che la sessione viene gestita tra un'istanza di servizio unico e proxy client (tutte le chiamate devono essere effettuate nella stessa istanza proxy).
Ecco alcune configurazioni di base per consentire contesto di sicurezza:
<wsHttpBinding>
<binding name="wsHttp">
<security mode="Message">
<message clientCredentialsType="UserName" estabilishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
EstabilishSecurityContext
è vero per impostazione predefinita. Quando si accende questo sul protocollo WS-SecureConversation viene utilizzato. Prima convocazione passa le credenziali che sono autenticati e token di sicurezza viene rilasciato al cliente. le chiamate successive usano questo token di sicurezza per fornire identità del client. Questo comportamento è trasparente per gli sviluppatori in modo da non avere a che fare con il gettone a tutti.