Frage

Wenn ich die aktuellen Benutzer-Anmeldeinformationen zu einem Webservice unter Verwendung System.Net.CredentialCache.DefaultCredentials geben, auf welche Art und Weise werden die Informationen übertragen werden? Ich glaube nicht, dass es Klartext sein wird, so dass die Anmeldeinformationen verschlüsselt werden müssen, aber wie sind sie?

War es hilfreich?

Lösung

Es hängt davon ab, was die Serveranforderungen in der HEAD-Antwort.

Zum Beispiel, wenn ich eine HEAD-Anforderung an Ihren Web-Service und eine der HTTP-Header in seiner Antwort auszuführen ist „WWW-Authenticate: NTLM“, dann werden die gespeicherten Anmeldeinformationen in DefaultCredentials verschlüsselt werden würde NTLM und schickte dann nach oben mit die volle GET / POST / PUT / Was auch immer. Um sicherzustellen, dass dies geschieht, müssen Sie sicherstellen, dass Ihr Webserver konfiguriert ist, die NTLM-Authentifizierung anzufordern. In IIS, ist dies ein Fall von „integrierten Windows-Authentifizierung“ auswählen. Ich bin nicht sicher über TomCat, aber diesen Beitrag relevant betrachtet.

Allerdings, wenn Ihr Web-Server antwortet mit "WWW-Authenticate: Basic" für eine bestimmte Ressource (das würde bedeuten, die creds im Klartext senden, verschlüsselt (HINWEIS: nicht verschlüsselt) als base64) , werden Sie eine Argument erhalten, wie es eine Sicherheitsausnahme betrachtet ist Ihr Konto Anmeldeinformationen über grundlegende auth zu senden.

Web-Server können auch mehrere Authentifizierungsmethoden zu akzeptieren, aber man sollte immer bereit sein zu akzeptieren, die schwächste von ihnen, so bietet einfache Auth als „Fall-Back“ bedeutet, dass einige Benutzer kann sehr gut sein das Senden konfiguriert werden ihre Anmeldeinformationen im Klartext.

Es wird ein Browser in der Regel die stärkste Methode zur Verfügung wählen, und ich vermute, (aber nicht wissen, für bestimmte), die .NET-Bibliotheken die gleiche Art und Weise verhalten.

Bearbeiten

Solange Ihr Webserver nur NTLM für Ihre Web-Dienst anfordert, können Sie sicher sein, dass jeder vernünftige Client keine Anmeldeinformationen im Klartext senden. Unter Verwendung der Netto-Klassen in .NET Framework, können Sie sicher sein, dass, wenn Sie DefaultCredentials verwenden, und injizieren Sie nicht manuell einen grundlegenden auth-Header selbst, werden Ihre Anmeldeinformationen verschlüsselten NTLM gesendet werden.

Ihre Zugangsdaten werden auf dem Server als großes verschlüsseltes Chaos, jeden aber der Web-Server ankommen, der sie entschlüsselt, um zu sehen, dass sie die Benutzername, Kennwort und Domäne für die aktuell angemeldeten Benutzer gehören.

Die Anmeldeinformationen DefaultCredentials wird hängen davon ab, welche Art von Anwendung angefordert DefaultCredentails senden. Wenn es sich um eine Client-Anwendung ist unter einem Benutzerkonto ausgeführt wird, werden die Anmeldeinformationen, die Benutzer sein. Wenn es sich um eine ASP.NET-Anwendung ist, die mit dem Web-Service ist in Verbindung steht, wird sie die Anmeldeinformationen für das Konto, das die app-Pool unter ausgeführt wird, standardmäßig ist dies NETWORK_SERVICE.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top