2009-07-12 38 views
7

Actualmente estoy desarrollando una aplicación Silverlight 3 que necesita algún tipo de autenticación de usuario, porque los datos extraídos de un servicio WCF son específicos del usuario. La audiencia objetivo es Internet regular, por lo que no hay un AD para autenticarse en contra.Autenticación de usuario Silverlight

Estas son algunas de las preguntas que he relativos a esa situación:

  • ¿Existe un marco u otro mecanismo que me apoyaría?
  • ¿Recomendaría la autenticación dentro de la aplicación Silverlight o a través de mecanismos externos como la autenticación de formularios? ¿Cuál es más seguro?
  • ¿Qué ocurre con el soporte fuera del navegador?

Respuesta

2

que utiliza la autenticación de ASP.NET. Simplemente use un MembershipProvider (o implemente el suyo propio). Luego, vaya al http://www.silverlightshow.net/items/Accessing-the-ASP.NET-Authentication-Profile-and-Role-Service-in-Silverlight.aspx para verificar cómo puede exponer el servicio de autenticación.

Luego, en su servicio WCF, que haga lo siguiente (con sede en 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); 
     } 
} 

Espero que ayude.

2

Consideraría utilizar las clases de autenticación que existen en ASP.NET. A continuación, puede usar .NET RIA Services (o simplemente, WCF) para comunicarse con el servicio de autenticación.

Consider this article as a primer.

+0

¿Tiene experiencia con esta solución? –

+0

Sí. Utilicé SL3 y .NET RIA Services. Es una aplicación de prueba de concepto en la que estoy trabajando, pero puedo crear y registrar usuarios de forma remota. – billb

Cuestiones relacionadas