Tengo un WCF HTTP REST Service y me conecto con un cliente HTTP en un lenguaje de programación diferente que escribe su propio HTTP personalizado. Me gustaría agregar WWW-Authenticate soporte de autenticación básica para mi servicio WCF.Agregar HTTP auth básico a un servicio WCF REST
Mis métodos se ven así:
[WebInvoke(UriTemplate = "widgets", Method = "POST")]
public XElement CreateWidget(XElement e)
{
...
}
¿Es posible para mí para filtrar alguna manera las peticiones HTTP para que pueda comprobar si hay una cadena de autenticación de base en vigor antes de que llegue a cada uno de los métodos REST como CreateWidget
arriba? Nota: Mi información de autenticación está en mi base de datos.
Básicamente quiero comprobar esto en los encabezados de solicitud: Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
y luego puedo analizar la cadena y validar el u/p en la base de datos.
El archivo web.config es el siguiente:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="DatabaseConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Database;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime maxRequestLength="10485760" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" maxReceivedMessageSize="1048576" maxBufferSize="1048576" />
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
</configuration>
He seguido los pasos que me sugirió, pero nunca se llama al módulo. Traté de agregar Basic Auth en IIS, pero aún así, el módulo no se llama. ¿Me estoy perdiendo de algo? –
No estoy seguro de por qué, ya que funcionó para mí, pero tal vez relacionado con esto: http://stackoverflow.com/questions/355261/whats-the-difference-between-system-web-and-system-webserver (I was prueba a través de VS depuración de servidor web alojado automáticamente) –
Tuve que agregar el módulo manualmente a IIS 7.5. –