tutorial tipos significado que mundo hola extremo encontrado wcf rest

tipos - Autenticación básica con el servicio WCF REST a algo que no sean cuentas de Windows?



wcf significado (5)

¿Existe una forma clara de exponer un servicio WCF REST que requiera autenticación básica, pero donde manejamos nosotros mismos la validación real del nombre de usuario / contraseña? Parece que cuando le dices a WCF en config que quieres usar la autenticación básica, te obliga a activar la autenticación básica en IIS e IIS solo puede realizar la autenticación básica contra cuentas de ventana.

El único truco que hemos encontrado es mentirle a WCF y decirle que no hay seguridad en el servicio y luego hacer la autenticación fuera de la pila de WCF usando un IHttpModule genérico (que tiene un archivo de configuración propietario para indicar qué URL tiene qué autenticación / autorización requisitos).

Parece que debería haber una mejor manera. ¿Alguien tiene uno?


Consulte Autenticación básica personalizada para servicios RESTful . El enfoque de Pablo usa la funcionalidad del interceptor que se proporciona a través del kit de inicio REST para resolver el problema. Si no desea depender del kit de inicio REST, puede crear su propio servidor de servicio y utilizar la funcionalidad de inteceptor provista.



Sí, absolutamente hay una manera. Necesita configurar un valor de userNamePasswordValidationMode personalizado para su servicio y dirigirlo a una clase con un método reemplazado que puede inspeccionar y validar las credenciales proporcionadas. Cuando se realiza una llamada RESTful, estas credenciales cuando se utiliza la autenticación básica en su forma adecuada deben estar en el encabezado de la solicitud. Con este método personalizado puede inspeccionar las credenciales y luego autenticar al cliente en su servicio. No se necesitan cuentas de Windows ni dominios.

Lo bueno es que puede llevar ese contexto de seguridad al siguiente nivel y proporcionar una autotracción detallada en el nivel del método. Es posible que haya instancias en las que un gran grupo de clientes pueda acceder al servicio, pero no todos los métodos dentro (es decir, clientes pagos frente a no remunerados). En este caso, también puede proporcionar autorización al nivel del método si es necesario.

A continuación hay una solución paso a paso (con demasiados pasos para integrar) que contiene tanto la configuración necesaria como la seguridad necesaria para tener una solución completa . El problema es a menudo la autenticación básica se utiliza sin asegurar el transporte con un certificado SSL y esto es malo . Asegúrese de seguir todos los pasos e implementará la autenticación básica sin la necesidad de ningún tipo de cuentas de Windows ni configuración en su servicio basado en RESTful de WCF.

Servicios RESTful: autenticación de clientes mediante autenticación básica


Si lo aloja en IIS, usar el módulo http personalizado es el camino a seguir. Puede traer el principal al lado de WCF para hacer la seguridad de acceso al código. Consulte Autenticación básica HTTP contra cuentas que no son de Windows en IIS / ASP.NET (Parte 3 - Agregar soporte de WCF) . Consulte también Autenticación HTTP básica personalizada para servicios web ASP.NET en .NET 3.5 / VS 2008 .

Si no está utilizando IIS, debería poder implementar userNameAuthentication. Ver por fin! Nombres de usuario sobre Autenticación de transporte en WCF .


es el nombre de usuario y la contraseña establecidos en el cliente como:

cc.ClientCredentials.UserName.UserName = ReturnUsername(); cc.ClientCredentials.UserName.Password = ReturnPassword();

¿O están incrustados en el cuerpo del mensaje REST?

Si el primero, puede usar un UserNamePasswordValidator personalizado: http://msdn.microsoft.com/en-us/library/aa702565.aspx

Si es el último, puede configurar el servicio sin seguridad y usar un CustomAuthorizationManager personalizado para validar el contenido del mensaje: http://msdn.microsoft.com/en-us/library/ms731774.aspx

Espero que uno u otro ayude! Intentaría publicar el código de muestra y la configuración, pero estoy @ home y no tengo acceso al código, que es todo @ trabajo.