Ich beziehe mich auf diesen ausgezeichneten Artikel http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/, der von amazon wie Sicherheit für Webdienste spricht. Allerdings wurde mir im Team die Frage gestellt, warum wir es brauchen, wenn wir bereits HTTPS verwenden. Ich konnte nicht antworten, da es mir wirklich so scheint, als ob sie Recht hätten, obwohl mir der Magen etwas anderes sagt.
Gibt es auch Stellen bei der Bereitstellung von REST-Diensten, an denen HTTPS möglicherweise nicht funktioniert? Mögen Sie Websites von Drittanbietern?
Wenn jemand Erfahrung in der Sicherung von Webdiensten über die öffentlichen Interwebs hat, werfen Sie bitte ein wenig Licht auf Ihre Erfahrungen.
Danke im Voraus.
BEARBEITEN: Zur Verdeutlichung spreche ich nicht von Benutzerauthentifizierung, sondern mehr von Clientauthentifizierung. Die Benutzerauthentifizierung kann als einfacher Text über HTTPS + REST angenommen werden.
Ich mache mir Sorgen, dass dies weiterhin jedem erlaubt, den Webdienst ohne meinen Client zu nutzen, um darauf zuzugreifen, da alles nur aus Plai-Text besteht, obwohl der Client-Endpunkt über HTTPS meinen Webdienst auch ohne die Client-Anwendung nutzen kann.
Antworten:
Warum müssen wir Google Mail - oder einer anderen Website mit Nutzerkonten - unseren Nutzernamen und unser Passwort mitteilen, wenn HTTPS bereits verwendet wird? Die Antwort ist die gleiche wie die Antwort auf Ihre Frage.
HTTPS stellt in erster Linie eine verschlüsselte Verbindung zwischen dem Server und dem Client her.
Sofern der Server nicht jedem Benutzer ein Zertifikat erteilt , kann der Server dem Client ohne eine andere Authentifizierungsmethode nicht vertrauen.
quelle
HTTPS ist sehr gut in der Verhinderung von Lauschangriffen und "Man in the Middle" -Angriffen. Da es den gesamten Datenverkehr für eine Sitzung verschlüsselt.
Da die meisten Benutzer jedoch die Standardzertifikate verwenden, die mit ihrem Browser geliefert wurden, wissen sie nicht, wie sie ihr eigenes persönliches Zertifikat erstellen oder den Browser für die Verwendung konfigurieren sollen.
Dies macht HTTPS für die Benutzerauthentifizierung ziemlich nutzlos, abgesehen vom Schutz eines Authentifizierungsdialogs vor Abhören usw.
quelle
Bei HTTPS geht es darum, den Kanal zu sichern und nicht zu beweisen, wer der Anrufer ist oder was Sie sonst noch beachten müssen. Authentifizierung, Autorisierung und Transportschichtverschlüsselung sind nur ein kleiner Teil dessen, was Sie berücksichtigen müssen. Viele der bekannten Sicherheitslücken in Bezug auf Webanwendungen betreffen in hohem Maße REST-APIs. Sie müssen die Validierung von Eingaben, das Knacken von Sitzungen, unangemessene Fehlermeldungen, interne Schwachstellen von Mitarbeitern usw. berücksichtigen. Es ist ein großes Thema.
Robert
quelle
Sie können den Ansatz von Client-SSL-Zertifikaten verfolgen und die Sicherheit von der API trennen. Der große Nachteil dieses Ansatzes ist der Betriebskostenaufwand, der immer höher wird, je mehr Kunden Ihre API konsumieren.
In jedem Fall ist die HTTP-Basisauthentifizierung für die überwiegende Mehrheit der öffentlich genutzten Dienste in Ordnung.
quelle