2012-06-26 11 views
19

Wenn alle API-Anrufe über HTTPS gesendet werden, fügt HMAC zusätzliche Sicherheit hinzu? Zum Beispiel sendet der Client in OAuth 2 seinen geheimen Schlüssel ohne irgendeinen Hash-Vorgang an den Provider. Wird dies als sicher angesehen, weil es über https ist? Während nicht streng OAUTH, würde HMAC auf diesen Anruf Oauth 2 sicherer machen? Wenn ja, warum ist das kein Standard-Teil von oauth 2?Ist HMAC erforderlich, wenn alle API-Aufrufe über https erfolgen?

Antwort

13

Der OAuth 2-Standard erfordert, dass der Autorisierungsserver HTTPS für alle Endpunkte verwenden muss und der Client einen mit HTTPS geschützten Rückruf verwenden soll. Da Nachrichteninhalte (Header, Abfrageparameter und Fragmente, die OAuth berücksichtigen) nur dem Server und dem Client bekannt sind, wird die Verwendung einer HTTPS-Verbindung als sicher angesehen. Es gibt also keinen Vorteil, wenn eine separate Signatur für eine Autorisierungsanfrage verwendet wird, weshalb solche Signaturen im Standard nicht einmal erwähnt werden.

Dies muss nicht unbedingt für die Antwort halten. Wenn der Client die Autorisierungsantwort für einen ungeschützten Callback erhält, kann er seine Gültigkeit nicht überprüfen. In solchen Fällen kann ein Angreifer beliebige Autorisierungsergebnisse an den Client senden. Wenn Sie eine Signatur mit den Rückrufparametern hinzufügen, können Sie dies vermeiden. Es scheint jedoch eine bessere Lösung zu sein, die gegenseitige Client/Server-Authentifizierung stattdessen mit einem HTTPS-Callback zu verwenden.

Obwohl während der Autorisierung keine echten Vorteile durch die Verwendung von Signaturen erzielt werden, können sie nützlich sein, um auf geschützte Ressourcen zuzugreifen, um den Diebstahl von Zugriffstoken zu vermeiden. Aus diesem Grund ist der MAC-Tokentyp im Standard, siehe section 7.1.

0

HMAC ist für die Authentifizierung, die bestimmen, wer Sie sind, https ist für die Sicherheit des Transports, die auf einem in der Mitte sicherstellen, können Sie den Inhalt Ihres Transports sehen.

Oauth 2 Autorisierungsserver verwenden geheimen Schlüssel oder ein Kennwort, wer Sie sind. Der OAuth2-Ressourcenserver verwendet das Token vom Autorisierungsserver, um festzustellen, wer Sie sind. Die Verwendung von https oder nicht hängt davon ab, ob Sie Ihren geheimen Schlüssel und Tokens schützen möchten.