2009-07-12 15 views
7

Attualmente sto sviluppando un'applicazione Silverlight 3 che richiede una sorta di autenticazione utente, poiché i dati estratti da un servizio WCF sono specifici dell'utente. Il pubblico di destinazione è la normale Internet, quindi non esiste alcun AD da autenticare.Silverlight autenticazione utente

Ecco alcune delle domande che ho in materia di quella situazione:

  • c'è un quadro o altro meccanismo che mi avrebbe sostenuto?
  • Consiglieresti l'autenticazione all'interno dell'app Silverlight o tramite meccanismi esterni come auth di moduli? Quale è più sicuro?
  • E il supporto fuori dal browser?

risposta

2

ho usato l'autenticazione di ASP.NET. Basta usare un MembershipProvider (o implementare il proprio). Quindi andare a http://www.silverlightshow.net/items/Accessing-the-ASP.NET-Authentication-Profile-and-Role-Service-in-Silverlight.aspx per verificare come è possibile esporre il servizio di autenticazione.

Poi, nel tuo servizio WCF, effettuare le seguenti operazioni (ospitato in ASP):

public class MyWCFService : IMyWCFService 
{ 
     // retrieve your UserId from the MembershipProvider 
     private int GetUserId() 
     { 
      MembershipUser user = Membership.GetUser(); 
      int userId = (int)user.ProviderUserKey; 
      return userId; 
     } 

     // check if user is authenticated 
     private bool IsUserAuthenticated() 
     { 
      return HttpContext.Current.User.Identity.IsAuthenticated; 
     } 

     public void Subscribe() 
     { 
      if (!IsUserAuthenticated()) 
      { 
       throw new SecurityException("You must be authenticated to be able to use this service."); 
      } 

      int userId = GetUserId(); 
      DoStuff(userId); 
     } 
} 

Speranza che aiuta.

2

Vorrei prendere in considerazione l'utilizzo delle classi di autenticazione esistenti in ASP.NET. È quindi possibile utilizzare Servizi RIA .NET (o anche semplicemente WCF) per comunicare con il servizio di autenticazione.

Consider this article as a primer.

+0

Hai esperienza con questa soluzione? –

+0

Sì. Ho usato i servizi RIA SL3 e .NET. È un'applicazione dimostrativa di cui sto lavorando, ma posso creare e registrare utenti in remoto. – billb

Problemi correlati