2011-02-04 14 views
7

Sto cercando consigli per far fronte con l'autenticazione WCF per un'applicazione rivolte sia Silverlight e WPF interfaccia client.Come-a che fare con l'autenticazione WCF per entrambi Silverlight 4 e WPF Application

EDIT: In realtà, la modalità di autenticazione ho bisogno è nome utente/password combinaison.

Inoltre, in futuro l'applicazione dovrebbe essere in grado di funzionare in modalità standalone (sia client (WPF) che server sullo stesso computer all'interno della stessa applicazione). Quindi non dovrei usare WCF in quel caso?

EDIT: Un'altra aggiunta, in futuro, di nuovo l'applicazione dovrebbe essere in grado di funzionare in modalità client-server di rete locale (ma senza IIS), come un gioco. Quindi non dovrei usare la WCF in quel caso? O qualsiasi altra opzione?

+0

Avevo bisogno di qualcosa di simile e dopo aver esaminato diverse opzioni integrate ho deciso di utilizzare un MessageInspector http://msdn.microsoft.com/en-us/library/aa717047.aspx. Usando questo potevo iniettare dati nell'header al di fuori della logica di implementazione del client e del servizio. – Michael

risposta

1

È possibile implementare il proprio validatore ereditando dalla UserNamePasswordValidator e l'impostazione del customUserNamePasswordValidatorType nella configurazione comportamento come questo:

<behaviors> 
      <serviceBehaviors> 
       <behavior name=""> 
        <serviceMetadata httpGetEnabled="true" /> 
        <serviceCredentials> 
         <userNameAuthentication userNamePasswordValidationMode="Custom" 
               customUserNamePasswordValidatorType="MyNamespace.MyValidator, MyNamespace" /> 
        </serviceCredentials> 
       </behavior> 
      </serviceBehaviors> 
     </behaviors> 

Sul lato client è possibile impostare la combinazione username/password nel ClientCredentials.UserName . Nome utente/Password del servizio.

0

Dai un'occhiata a questa soluzione, utilizzando un AuthenticationService. Mi piace e deciso di usarlo per un'applicazione tri-piattaforma (web/SL/WPF)

http://msdn.microsoft.com/en-us/library/system.web.applicationservices.authenticationservice.aspx

Seguite i link per le implementazioni di esempio.

In questo modo, si può contare su un classico personalizzato implementazione ASP .NET MembershipProvider (anche in un client standalone).

+0

Ho già visionato AuthenticationService, ma è utilizzabile con le versioni "future" della mia domanda come descritto nella domanda? –

+0

È possibile utilizzare un MembershipProvider di ASP .NET in una classica applicazione desktop disconnessa, nessun problema. – Jeff

+0

Come utilizzare ASP.NET MembershipProvider senza HttpContext? Come un'applicazione WPF autonoma. –

0

IIS non è un requisito per l'hosting del servizio WCF. Dai un'occhiata a questo link per varie opzioni di hosting. Anche WCF consente la comunicazione su vari protocolli. Dai uno sguardo a questo link per un riepilogo delle opzioni di hosting basate sulla piattaforma operativa e il protocollo di comunicazione.

0

Ci sono alcune tecniche che possono essere utilizzate per l'autenticazione dei servizi WCF (certificati X509, di token, nome utente/password e l'autenticazione di Windows. Selecting il tipo di credenziale corretta è importante.

Supponendo (dal momento che si sta utilizzando Silverlight & WPF) che l'installazione è all'interno di un ambiente Windows è possibile utilizzare l'autenticazione di Windows. To abilitare l'autenticazione di Windows seguire i passaggi evidenziati e ospitano il servizio su IIS.

Spero che questo aiuti e buona fortuna !.

0

Il vantaggio dell'utilizzo di WCF è che se si desidera esporre un servizio all'interno della rete o all'esterno è possibile modificare/aggiungere alcune configurazioni aggiuntive senza alcuna modifica al codice.

Quindi, nel tuo scenario di avere sia client che server su una macchina o all'interno di una rete è assolutamente soddisfacente e il modo semplice è di avere 2 endpoint esposti che si occupano dei tuoi requisiti sullo stesso servizio.

Si può andare in giro con un endpoint come pure, ma utilizzando diversi punti finali con diversi meccanismo vincolante riduce il sovraccarico durante l'autenticazione. Es: Quando si è sulla stessa macchina è possibile utilizzare una rete: pipe o net: binding tcp Quando si è all'interno del dominio è possibile utilizzare net: tcp o httpbinding.

Le prestazioni differiscono quando si utilizzano collegamenti diversi.