OAuth1 oder OAuth2 für eine nicht-SSL Webseite?
Ich will, OAuth zu implementieren-server auf meinem PHP-server, die dosent haben eine SSL-Verbindung. Es gibt keine anständige OAuth-2-framework für PHP, codeigniter noch. So was sollte ich verwenden OAuth1 oder OAuth2 ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die kurze Antwort ist: Sie sollten erwägen, die Verwendung von OAuth 1.0 a [1] eher als OAuth 2.0
Ist die lange Antwort unten:
OAuth 2.0 standardmäßig erfordert die Verwendung von SSL/TLS für transport layer security. Deshalb ist bei der Implementierung eines OAuth 2.0 Authorization Server, die Sie benötigen, damit client-Anwendungen die Verbindung zu den Autorisierungs-Endpunkt sowie Token-Endpunkt über einen sicheren Kanal. In den folgenden Abschnitten finden Sie in der OAuth 2.0-Spezifikation [2]:
3.1 (Authorization-Endpunkt)
"[...] der Autorisierungs-server MUSS die Verwendung von TLS, wie in Abschnitt 1.6 beim senden von Anforderungen an den authorization-Endpunkt."
3.2 (Token-Endpunkt)
"[...] der Autorisierungs-server MUSS die Verwendung von TLS, wie in Abschnitt 1.6 beim senden von Anforderungen an den token-Endpunkt."
In Ihrem Fall, wenn Sie nicht über eine SSL-Verbindung, können Sie immer noch möglicherweise betrachten Sie die Verwendung von OAuth 2.0 und die MAC-Access-Authentifizierung [3], die angibt, wie man OAuth-2.0-Anforderungen durch die Ausgabe von MAC-type access-Token. Solche Token sind kryptografisch signiert mit einem gemeinsamen symmetrischen Schlüssel (Schlüssel ist geteilt zwischen der Clientanwendung und dem server).
WICHTIGER HINWEIS: In einem solchen setup, allerdings werden Sie noch brauchen, um einen Mechanismus für die Kunden in der Lage sein zu etablieren, die ein gemeinsames Geheimnis mit OAuth-2.0-server in einer sicheren Art und Weise (wie dies geschieht, ist bis zu Ihnen, - können über einige SSL-Kanal oder außerhalb-des-band, je nach Ihren genauen use cases). Dies ist eine strenge Anforderung an clients ermöglichen den sicheren Zugriff auf geschützte Ressourcen!
"Die MAC-Regelung erfordert die Einrichtung eines gemeinsamen symmetrischen Schlüssels
zwischen dem client und dem server. Diese Spezifikation bietet eine
eine solche Methode für die Ausgabe eines Satzes von MAC-Anmeldeinformationen auf dem client mit
OAuth 2.0 in form einer MAC-type access-token.
Primäres Ziel dieses Mechanismus ist es, zu vereinfachen und zu verbessern
Die HTTP-Authentifizierung für Dienste, die nicht Willens oder nicht in der Lage zu
beschäftigen TLS für jede Anforderung. Insbesondere, diesen Mechanismus nutzen
eine erste TLS-setup-phase zu etablieren, die ein gemeinsames Geheimnis zwischen
client und server. Der gemeinsame geheime Schlüssel wird dann verwendet, über eine
unsicheren Kanal zum Schutz vor einem passiven Netzwerk
Angreifer."
Basierend auf der obigen Erklärung würde ich erwägen, die Verwendung von OAuth 1.0 a [3], die nicht erfordern den Einsatz eines transport-level-Sicherheit für die Kommunikation zwischen client und Authorization Server (OAuth 1.0 a verwendet den Begriff "Service-Provider", btw). Anstatt dessen verlässt es sich auf Nachrichten, die signiert mit einem gemeinsamen symmetrischen Schlüssel (oder einen RSA-Schlüssel). Aber. bitte beachten Sie, dass, wenn Sie die Verwendung von Signaturen mit HMAC-SHA1 oder RSA-SHA1 (d.h. entscheiden Sie sich für die Klartext-Signatur-Typ), müssen Sie die Verwendung von SSL/TLS sowieso.
[1] https://tools.ietf.org/html/rfc5849
[2] http://tools.ietf.org/html/rfc6749
[3] http://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-01
Vom Kunden Perspektive, OAuth 2 ist einfacher zu integrieren in Anwendungen, unter anderem Vorteile: Wie ist OAuth 2 unterscheidet sich von OAuth 1?
Einfach integrieren Sie beliebige externe Oauth2-Bibliothek mit Codeigniter. Hier ist einer: https://github.com/bshaffer/oauth2-server-php
Ich bin mit OAuth2 für 2 Jahre, und ich empfehle es zu benutzen, da es sehr zuverlässig ist.
In Bezug auf SSL, soweit ich weiß, OAuth sollte die Nutzung von SSL zu gewinnen ordnungsgemäße Umsetzung, dies zu vermeiden, wird einfach nicht die Annahme OAuth-Protokoll.