Wenn für eine API die Authentifizierung eines Clients erforderlich ist, wurden zwei verschiedene Szenarien verwendet, und ich frage mich, welchen Fall ich für meine Situation verwenden soll.
Beispiel 1. Eine API wird von einem Unternehmen angeboten, um Dritten die Authentifizierung mit einem Token und einem Geheimnis unter Verwendung von HTTP Basic zu ermöglichen.
Beispiel 2. Eine API akzeptiert einen Benutzernamen und ein Kennwort über HTTP Basic, um einen Endbenutzer zu authentifizieren. Im Allgemeinen erhalten sie ein Token für zukünftige Anfragen zurück.
Mein Setup: Ich werde eine JSON-API haben, die ich als Backend für eine Mobil- und Web-App verwende. Es scheint eine gute Praxis zu sein, dass sowohl die mobile als auch die Web-App ein Token und ein Geheimnis mitsenden, sodass nur diese beiden Apps auf die API zugreifen können und andere Drittanbieter blockieren.
Mit der Mobil- und Web-App können sich Benutzer anmelden und Beiträge übermitteln, ihre Daten anzeigen usw. Ich möchte, dass sie sich bei jeder Anforderung auch über HTTP Basic anmelden.
Verwende ich irgendwie eine Kombination dieser beiden Methoden oder sende ich nur die Anmeldeinformationen des Endbenutzers (Benutzername und Token) bei jeder Anforderung? Wenn ich nur die Anmeldeinformationen des Endbenutzers sende, speichere ich sie in einem Cookie auf dem Client?
quelle
Antworten:
Bei der HTTP-Basisauthentifizierung müssen der Benutzername und das Kennwort bei jeder Ressourcenanforderung gesendet werden. Der Benutzername: Kennwort wird in der Base64-codierten Zeichenfolge mit dem Präfix "Basic" im Anforderungsheader "Authorization" übergeben. Wenn Ihre gesamte HTTP-Kommunikation verschlüsselt ist (über SSL), können die Informationen des Authorization-Headers möglicherweise nicht einfach von Angreifern verwendet werden, da es unwahrscheinlich ist, dass sie darauf zugreifen können.
SSL-verschlüsseltes http mit einfacher Authentifizierung sollte ausreichen.
quelle
Kann OAuth / OpenID zusammen mit Token / Secret funktionieren?
Ich habe kürzlich folgendes Szenario in Betracht gezogen:
Als einfachen Test konnte ich:
Auf diese Weise kann sich die mobile Geräteanwendung mit denselben Anmeldeinformationen wie über das Web-Front-End (dasselbe Konto) authentifizieren und den Zugriff auf die API autorisieren.
quelle