3 Stimmen

Verhindern des domänenübergreifenden Zugriffs auf Dienste mit WCF

Ich habe mehrere WCF-Dienste in einer ASP.NET-Anwendung. Ich möchte verhindern, dass Anwendungen von außerhalb meiner Domäne auf diese Dienste zugreifen. Gibt es eine Konfigurationseinstellung, mit der ich Anfragen von außerhalb meiner Domäne blockieren kann?

Ich danke Ihnen!

2voto

John Saunders Punkte 159011

Was Sie wollen, ist Authentifizierung. Die Beschränkung des Zugriffs auf Basis der Domäne ist keine sichere Art der Authentifizierung.

1voto

Ladislav Mrnka Punkte 355028

Wenn Sie Ihre Dienste nicht dem Internet aussetzen wollen, sollten Sie sie nicht auf einem öffentlichen Server hosten. Wenn Sie dies wirklich brauchen, sollten Sie zuerst nach einer Möglichkeit suchen, Ihre Dienste auf Netzwerkebene zu sichern. Zum Beispiel sollte der ISA-Server in der Lage sein, Anfragen an Ihre Dienste zu blockieren.

0voto

David Hoerster Punkte 27923

EDIT : Dadurch wird verhindert, dass alle nicht authentifizierten Benutzer auf Ihre Dienste zugreifen können. Wenn Sie benötigen, dass nicht authentifizierte Benutzer in Ihrer Domäne auf die Dienste zugreifen können, lassen Sie es mich wissen, und ich werde das Update entsprechend anpassen.

Verwenden Sie die Authentifizierung in Ihrer ASP.NET-Anwendung?

<system.web>
  ...
  <authentication mode="Forms">
    <forms protection="All" defaultUrl="login.aspx" ... />
  </authentication>
  ...
</system.web>

Wenn dies der Fall ist, kann auf Ihre .svc-Dateien nicht zugegriffen werden, bis sich Ihre Benutzer authentifizieren. Wenn ein nicht authentifizierter Benutzer versucht, auf eine .svc-Datei zuzugreifen, wird er auf Ihre Anmeldeseite umgeleitet.

EDIT(2) : Da Sie einen nicht-authentifizierten Zugang zu den Diensten Ihrer Website benötigen, können Sie ein Cookie in Erwägung ziehen, das beim ersten Besuch der Website an den Computer des Benutzers gesendet wird. Das Cookie könnte ein Erstellungsdatum und einen geheimen Schlüssel verwenden, um einen Hash zu erstellen, den Sie bei jeder Anfrage auf dem Server validieren können. Anfragen von anderen Websites würden das Cookie nicht weitergeben, und Ihr Dienst würde manuell prüfen, ob das Cookie vorhanden ist oder nicht - ist es nicht vorhanden, wird die Anfrage abgelehnt.

Wenn für Ihre WCF-Dienste die ASP.NET-Kompatibilität aktiviert ist (true) und AspNetCompatibilityRequirementsMode auf Erlaubt oder Erforderlich gesetzt ist, sollten Sie Zugriff auf HttpContext und Cookies haben. Hier finden Sie weitere Informationen über den ASP.NET-Kompatibilitätsmodus.

Dies ist möglicherweise nicht die beste Lösung, da ich Ihr Szenario und Ihre Anforderungen nicht kenne. Aber hoffentlich hilft das.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X