2 Stimmen

ASP.NET -> WCF-Dienst erfordert Windows-Authentifizierung

Ich wurde damit beauftragt, eine einfache Admin-App zu erstellen. Die App braucht ein ASP.NET-Frontend, das mit einer Reihe von Back-End-Dienste mit WCF spricht.

Eine Anforderung ist, dass die Benutzer der Anwendung mit der Windows-Authentifizierung authentifiziert werden. Ich kann dies problemlos tun, wenn die Anwendungslogik in der ASP.NET-Anwendung enthalten wäre, aber ich habe keine Ahnung, wie ich die Authentifizierung innerhalb der Backend-WCF-Dienste durchführen kann?

  • Ist es möglich, Anmeldeinformationen an einen WCF-Dienst weiterzuleiten und ihn die Authentifizierung durchführen zu lassen?

3voto

Rob McCready Punkte 1901

Es kommt darauf an... (Beachten Sie, dass das meiste davon auf HTTP/IIS als Transportmedium basiert, was bei Verwendung von TCP oder anderen Bindungen anders sein kann)

WCF selbst kann für die Verwendung von Transport- oder Nachrichtensicherheit unter Verwendung der aktuellen Anmeldeinformationen eingerichtet werden.

Wenn sich der WCF-Dienst (und alles, mit dem er unter Verwendung der aktuellen Anmeldeinformationen kommunizieren muss) auf demselben Rechner wie das ASP>NET-Frontend befindet, ist wahrscheinlich alles in Ordnung.

...sonst könnten Sie auf " Doppelter Hopfen Probleme mit der "Authentifizierung". Grundsätzlich wird Windows auth eine "Impersonation"-Identität auf dem Webserver erhalten, was lokal in Ordnung ist, aber es hat nicht die Erlaubnis, sich vom Webserver zu authentifizieren. Um dies zu tun, benötigen Sie eine "Delegations"-Identität.

Die mir bekannten Möglichkeiten, eine Delegationsidentität zu erhalten, sind Kerberos und Basic Authentication.

Wenn Sie also mit "Windows-Authentifizierung" wirklich meinen, dass sich alle (Client und alle Server) in derselben AD-Domäne befinden, könnte das in Ordnung sein.

0voto

Mike Punkte 1

Ich habe eine ASP.NET-Site, die Windows-Authentifizierung verwendet und einen WCF-Dienst aufrufen muss, für den Anonyme und Windows-Authentifizierung aktiviert sind. Das Problem, das ich hatte, war, die Windows Credentials an den WCF-Dienst zu übergeben.

Zu diesem Zweck habe ich Folgendes getan

  1. In der Web.config der Website habe ich sichergestellt, dass meine WCF-Bindungen die Windows-Authentifizierung verwenden: security mode="TransportCredentialOnly"

    transport clientCredentialType="Windows"

  2. IN IIS habe ich einen App Pool mit .Net 4 und klassischem Managed Pipeline Mode erstellt

  3. In den Authentifizierungseinstellungen meiner Website

    Anonyme Autorisierung - Deaktiviert

    ASP.NET Impersonation - Aktiviert

    Windows-Authentifizierung - Aktiviert

Das hat bei mir funktioniert.

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