2016-02-12 13 views
5

Ich habe eine API mit folgenden Methode:Sichere Drittanbieter-API-Aufrufe auf mobilen app

https://api.example.com/services/dosomething 

ich diesen Dienstes zu drei verschiedenen mobilen Anwendungen am Bereitstellung, die jeweils mit Hunderten von Benutzern. Wenn sich ein Benutzer in der mobilen App anmeldet, muss ein Aufruf an meine API erfolgen.

Ich weiß, dass jedes der drei mobilen Anwendungen einen anderer API-Schlüssel bereitstellt und eine HTTP Basic Authentication mit ihm zu tun ist nicht sicher, da der API-Schlüssel würde unsafely in dem Gerät ein jemand gespeichert werden kann, es nehmen und nutze es schlecht aus.

Der Ansatz von OAuth2 funktioniert nicht, da ich nur Informationen von meinen drei Kunden haben, nicht ihre Hunderte von Benutzern.

Was ist der beste Ansatz, um die Aufrufe meiner API auf Mobilgeräten zu sichern?

Antwort

5

In Ihrem Fall ist Ihr Ansatz mit OAuth2 gut: Mobile Apps (Clients) erhalten Delegierungen von Ressourcenbesitzern (Ihre Benutzer), um geschützte Ressourcen auf einem Ressourcenserver (Ihrer API) aufzurufen.

Sie haben nur Informationen über Ihre Clients, da OAuth2 nicht für die Authentifizierung Ihrer Benutzer, sondern für die Autorisierung Ihrer Clients reserviert ist. Die Clients werden mit einer Client-ID identifiziert. In Ihrem Fall und wenn Sie wissen möchten, welcher Client Ihren Ressourcenserver aufruft, sollte jeder Client eine dedizierte Client-ID haben. Sie können es auch mithilfe anderer Informationen wie der IP-Adresse oder eines benutzerdefinierten Headers in den gesendeten Anforderungen identifizieren. Wenn Sie wissen möchten, wer Ihre Benutzer sind, sollten Sie die Erweiterung OpenID Connect implementieren. Diese Erweiterung funktioniert auf einem Autorisierungsserver, der auf OAuth2 basiert. Die Authentifizierung des Benutzers wird vom Autorisierungsserver durchgeführt. Ein ID-Token wird mit Informationen über den Benutzer ausgegeben. Der Client (oder die mobile App) muss die Anmeldeinformationen des Benutzers nicht abrufen oder speichern.

Es gibt eine excellent video where the both protocols are explained (vor allem von 04.44 bis 11:00).

+0

Danke! Sie haben gesagt, dass OAuth2 für die Autorisierung meiner Kunden (mobile Apps) vorgesehen ist. Wie funktioniert diese Authentifizierung? Gibt es einen API-Schlüssel oder einen Benutzernamen/ein Passwort pro App? Wenn ja, wie können wir diese Informationen privat halten? Ich muss nicht wissen, welcher Benutzer es ist, aber ich muss wissen, welcher Client die Anfrage sendet. – Arturo

+0

Hallo. Ich aktualisierte meine Antwort und fügte Details hinzu. ich hoffe es hilft dir –

Verwandte Themen