Ich habe einen WCF-HTTP-REST-Dienst und binde ihn mit einem HTTP-Client in einer anderen Programmiersprache ein, der sein eigenes benutzerdefiniertes HTTP schreibt. Ich möchte WWW-Authenticate grundlegende Authentifizierung Unterstützung zu meinem WCF-Dienst hinzufügen.Einfache HTTP-Authentifizierung zu einem WCF-REST-Service hinzufügen
Meine Methoden wie folgen aussehen:
[WebInvoke(UriTemplate = "widgets", Method = "POST")]
public XElement CreateWidget(XElement e)
{
...
}
Ist es möglich für mich irgendwie eingehende HTTP-Anforderungen zu filtern, um so ich für ein gültiges Grund Auth Zeichenfolge überprüfen kann, bevor er jeden der REST-Methoden wie CreateWidget
oben trifft? Hinweis: Meine Authentifizierungsinformationen sind in meiner Datenbank gespeichert.
Grundsätzlich möchte ich dies in den Anforderungsheadern überprüfen: Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
und dann kann ich selbst diese Zeichenfolge analysieren und die u/p in der Datenbank validieren.
Die web.config-Datei ist wie folgt:
<?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>
Ich habe die Schritte wie Sie vorgeschlagen, aber das Modul wird nie aufgerufen. Ich habe versucht, Basic Auth auf IIS hinzuzufügen, aber das Modul wird nicht aufgerufen. Fehle ich etwas? –
Ich bin mir nicht sicher, warum es für mich gearbeitet hat, aber vielleicht damit verbunden: http://stackoverflow.com/questions/355261/whats-the-difference-between-system-web-and-system-webserver (ich war testing via VS-Debugging automatisch gehosteten Webserver) –
Ich musste das Modul manuell zu IIS 7.5 hinzufügen. –