2011-02-04 9 views
7

Estoy buscando asesoramiento para tratar con Autenticación WCF para una aplicación destinada tanto a la interfaz cliente de SilverLight como a la de WPF.Cómo hacer frente a la autenticación WCF para SilverLight 4 y la aplicación WPF

EDITAR: En realidad, el modo de autenticación que necesito es nombre de usuario/contraseña combinaison.

Además, en el futuro la aplicación debería poder funcionar en modo completamente independiente (tanto el cliente (WPF) como el servidor en la misma computadora dentro de la misma aplicación). Entonces, ¿no debería usar WCF en ese caso?

EDITAR: Otra adición, en el futuro otra vez, la aplicación debería poder funcionar en el modo de cliente-servidor de red local (pero sin IIS), como un juego. Entonces, ¿no debería usar WCF en ese caso? O cualquier otra opción?

+0

Necesitaba algo similar y después de revisar las diferentes opciones incorporadas, decidí usar un MessageInspector http://msdn.microsoft.com/en-us/library/aa717047.aspx. Al usar esto, podría inyectar datos en el encabezado fuera del cliente y la lógica de implementación del servicio. – Michael

Respuesta

1

Usted puede implementar su propio validador heredando de la UserNamePasswordValidator y ajuste de la customUserNamePasswordValidatorType en la configuración de la conducta de esta manera:

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

En el cliente puede establecer la combinación de nombre de usuario/contraseña en el ClientCredentials.UserName .UserName/Password propiedad de su servicio.

0

Consulte esta solución, utilizando un servicio de autenticación. Me gusta y decidí utilizarlo para una aplicación tri-plataforma (web/SL/WPF)

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

seguir los enlaces para las implementaciones de muestra.

De esta manera, puede confiar en una implementación clásica personalizada ASP .NET MembershipProvider (incluso en un cliente independiente).

+0

Ya examiné AuthenticationService, pero ¿se puede usar con las versiones "futuras" de mi aplicación como se describe en la pregunta? –

+0

Puede usar un ASP.NET MembershipProvider en una clásica aplicación de escritorio desconectada, no hay problema. – Jeff

+0

Cómo usar ASP.NET MembershipProvider sin HttpContext? Al igual que una aplicación autónoma de WPF. –

0

IIS no es un requisito para alojar el servicio WCF. Eche un vistazo a este link para varias opciones de alojamiento. También WCF permite la comunicación a través de varios protocolos. Eche un vistazo a este link para obtener un resumen de las opciones de alojamiento basadas en la plataforma operativa y el protocolo de comunicación.

0

Hay algunas técnicas que se pueden utilizar para la autenticación de los servicios WCF (certificados X509, ficha, nombre de usuario/contraseña y ventanas de autenticación. Selecting el tipo de credencial correcta es importante.

Suponiendo (dado que está utilizando Silverlight & WPF) que la instalación se encuentra dentro de un entorno windows, puede utilizar la autenticación de windows. To habilitar la autenticación de windows, siga los pasos resaltados y reciban a su servicio en IIS.

Espero que esto ayude y buena suerte !.

0

La ventaja de utilizar WCF es que si desea exponer un servicio dentro de la red o al mundo exterior, puede simplemente cambiar/agregar algunas configuraciones adicionales sin ningún cambio en el código.

Por lo tanto, en su situación de tener cliente y servidor en una máquina o dentro de una red es absolutamente bueno y la manera más fácil es tener 2 puntos finales expuestos que cubran sus necesidades en el mismo servicio.

Puede moverse con un punto final también, pero el uso de diferentes puntos finales con un mecanismo de enlace diferente reduce su sobrecarga durante la autenticación. Ejemplo: cuando está en la misma máquina, puede usar una red: pipe o net: enlace de tcp Cuando se encuentra dentro del dominio, puede usar net: tcp o httpbinding.

El rendimiento es diferente cuando se utilizan enlaces diferentes.

Cuestiones relacionadas