Verständnis WCF-Windows-Authentifizierung
Ich habe einen Dienst mit windows-Authentifizierung. Bei Verwendung des folgenden Codes, bekomme ich die Windows-Identität des Benutzers, der (mit dem client) verbraucht der service.
String currentUser = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
Die Konfiguration der server:
<binding name="messageSecurity">
<security mode="Message">
<message clientCredentialType="Windows"/>
</security>
</binding>
Ich auch gelesen, dass in dem server, es ist die Verwendung von Kerberos für diese zu arbeiten.
Nun, ich bin versucht, zu verstehen, seine Bedeutung in unserem Firmennetzwerk. Im Büro werden die Nutzer das einloggen auf Ihre desktops mithilfe Ihrer active directory-Anmeldeinformationen. Unser Dienst gehostet wird, in windows server namens "SERV1" .
-
Ist nur Benutzer mit Zugriff (login) auf "SERV1" auf den Dienst zugreifen kann? Oder alle Benutzer, die sich anmelden können, um das office-Netz (verklagt active directory-Anmeldeinformationen), wird in der Lage sein, zu konsumieren, der service?
-
Ist es ein Weg, um sicherzustellen, dass nur CIO Bewerbungen werden auf den Dienst zugreifen, halten den Dienst als windows authentifiziert?
-
Führt diese Authentifizierung überprüfen Sie geschehen, für jede service-operation anrufen oder nur für den ersten Aufruf?
-
Gibt es eine Möglichkeit, der service wird in der Lage sein, um zu wissen, die windows-Anmeldeinformationen des Benutzers?
Hinweis: Was ich verstehe ist WindowsAuthentication werden kann im Vergleich zu einer Mitgliedschaft Anbieter die Bereitstellung von Benutzername und Passwort von einem zentralen Standort aus. Es kann verglichen werden, um ASP.Net Mitgliedschaft-Anbieter oder Active Directory-Mitgliedschaft-Anbieter.
Weiter Lesen:
-
ASP.NET Active Directory-Mitgliedschaft-Anbieter und den SQL-Profil Anbieter
-
http://www.theserverside.net/tt/articles/showarticle.tss?id=ClaimsBasedSecurityModel
- Hier ist ein sehr schöner Beitrag, der zeigt, wie Sie die AD-Gruppen zum einschränken des Zugriffs auf den Dienst: stackoverflow.com/a/5136551/29407
- Danke. Ich hoffe, der link ist für meine zweite Frage. Könnten Sie bitte auch andere Fragen beantworten zu? Auch (für Frage #2), ich bin nicht versucht, Sie zu beschränken Sie den Zugriff basierend auf der Rolle, sondern der Kunde.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja - das ist der Punkt der Verwendung der Windows-Anmeldeinformationen in einem WCF-Dienst. Nur Benutzer, die ein Domänenkonto in der Domäne des Active Directory oder eine separate Domäne, die hat eine volle bidirektionale Vertrauensstellung mit Ihrer domain) können auf den Dienst zugreifen.
Den WCF-Sicherheit-Grenze ist der Active Directory-Domäne - nicht einen bestimmten server.
Wie sind diese "CIO-approved" - Anwendungen von anderen unterscheidet? WCF erfolgt durch Konten - in der Regel Benutzer-accounts. Sie können festlegen, welche Konten Zugriff auf Ihre Dienst (z.B. dass diese Konten werden Mitglied einer bestimmten AD-Gruppe oder sowas). Sie können nicht wirklich "limit", basierend auf Anwendungen (nur, wenn diese Anwendungen spezifische application-level-Konten Zugriff auf Ihren WCF-service)
Hängt von Ihrem service - wenn Sie einen pro Anruf WCF-Dienst, der dann die überprüfung erfolgt für jeden Anruf. Wenn Sie eine pro Sitzung WCF-Dienst mit "Sicherheits-negotiation" aktiviert, dann wird die Prüfung geschieht einmal am Anfang der Sitzung-und nicht mehr, bis die session beendet wird.
Ja -
OperationContext.Current.ServiceSecurityContext.WindowsIdentity
IST die Windows-Anmeldeinformationen (Windows identity) verwendet, um rufen Sie Ihren service. Es ist viel mehr als nur der user-name.....Ist das nicht ein Authentifizierung Aufgabe, das ist eine Genehmigung Aufgabe. Kerberos ist dafür verantwortlich, dass der Benutzer authentifiziert ist (der name, den Sie bekommen, ist Ihre eigentliche name). LDAP-Autorisierung verwaltet. In einer Windows-Kontext bedeutet das, dass die Benutzer Mitglied sein sollen einige erlaubt-Zugriff-server-stuff-Gruppe (und der Dienst muss überprüfen, dass dies der Fall ist).
Anwendungen? Nicht wirklich. Das heißt, es gibt zwei Arten von authentifizierten Sicherheitsprinzipale in Active Directory-Benutzer und-Computer. Aber warum ist es egal, welche Anwendung ausgeführt wird, wenn der Benutzer tun, der ausgeführt hat, die Berechtigung zum herstellen einer Verbindung zum service? So formuliert ein anderer Weg, Sie können nicht aufhören, jemand aus mit Ihren eigenen code zu tun genau das, was Ihr code tun würde.
Sollte keine Rolle spielen. Die Authentifizierung funktioniert, nicht? Was tatsächlich geschieht, ist, dass die Anwendung übergeben wird, ein ticket zu beweisen, dass der Benutzer bereits authentifiziert ist (auf dem KDC, die active-directory-server).
Ja, die security-Kontext ist, in irgendeinem Sinn, dem Benutzer die Anmeldeinformationen eingeben zu müssen. Möglicherweise haben Sie auch andere Referenzen, aber können Sie sich diese auch.