2009-03-23 20 views
2

Ich schreibe einen traditionellen ASMX Webservice mit C# mit .Net 2.0 für den Einsatz auf IIS. Der Webservice wird in einer Shared-Hosting-Umgebung bereitgestellt, in der jeder Client seine eigene Kopie der Anwendung in einem separaten virtuellen Verzeichnis hat (ich weiß, ich weiß, es ist eine Legacy-App). In jedem virtuellen Verzeichnis befindet sich eine einzelne Kopie des Webservice.Wie kann ich den Zugriff auf einen Webservice programmatisch beschränken?

Da der Webservice möglicherweise einige mächtige Dinge tun könnte, möchte ich optional den Zugriff auf bestimmte IP-Adressen beschränken. Dies in der Firewall zu tun ist keine sehr gute Option, da nur der Webservice und nicht der Rest der Website eingeschränkt werden sollte - und dies auf einer virtuellen Verzeichnisebene.

Kann ich die IP-Adresse des Anforderers programmgesteuert lesen und mit einer Liste vergleichen, damit ich Anrufe von anderen Adressen abweisen kann? Gibt es irgendwelche großen Fallstricke?

Dank

Antwort

4

Ja, Sie können es leicht tun.

[WebMethod] 
public bool IsAlive() 
{ 
    string callingAddress = HttpContext.Current.Request.UserHostAddress; 
    return (callingAddress == allowedAddress); 
} 

Die einzigen Fehlerquellen sind die Wartung der Liste der IP-Adressen.

Es ist auch erwähnenswert, dass Sie IP-Adresszugriffssteuerung auf einer Webanwendung-Basis innerhalb von IIS konfigurieren können. Ich habe beide Ansätze zu unterschiedlichen Zeiten verwendet und es kommt nur darauf an, wie Sie die Liste der autorisierten IP-Adressen pflegen wollen.

Verwandte Themen