PHP-API für mobile Apps - OAuth notwendig?

Trash

Erfahrenes Mitglied
Moin,
ich habe eine Website bei der man sich einloggen und diverse Funktionen nutzen kann. Um mir die Programmierung von mobilen Apps (iOS, Android) beizubringen möchte ich für diese Website eine App programmieren.

Der erste Schritt war nun eine API für die Daten anzubieten.

Ich habe z.B. eine Funktion, die unter der URL:

Code:
http://mysite.com/api/players/get/1

Den Player in der DB mit der ID ausliest und als JSON zurückliefert. Nun stelle ich mir meine App vor, die gestartet wird und beim erstmaligen öffnen soll der User sein Name + PW eingeben. Die API muss nun eine Funktion liefern, die überprüft ob es Username und PW in der DB gibt. Wenn hier true zurückgeliefert wird, soll die App die weiteren Funktionen anbieten.

Ich habe mich nun ein bisschen eingelesen und sehe, dass die meisten APIs mit OAuth gesichert werden. Ist dies aber auch in meinem Fall notwendig, wenn die API nur von meinen Apps genutzt wird und nicht von Drittentwicklern?

Ich kenne OAuth nur, indem man z.B. eine Applikation hat die auf die Google-Credentials zugreifen möchte und man dies erlauben muss. Das ist aber bei mir nicht der Fall... sehe ich es richtig, dass ich quasi eine DB-Tabelle mit App-ID, token und keys erstellen muss, diese werden dann einfach fest in der App verdrahtet und benutzt. Wird der User dann bei jedem Start der App gefragt, ob er Zugriff erlauben möchte? Das ist ja z.B bei der Facebook App auch nicht so, dort tippt man seine Userdaten ein und ist eingeloggt, man wird ja nirgends hingeleitet um etwas zu bestätigen.

Versteht jemand was ich meine und kann mir helfen?

Danke!
 
Hallo,

ich würde mich erstmal auf ein BS konzentrieren. Aus eigener Erfahrung gibt es enorme Unterschiede zwischen IOS und Android und dann darf man die Unterschiede zwischen den einzelnen BS-Versionen außer Acht lassen. Für Iphone kannst du das eventuell gebrauchen: http://openbook.galileocomputing.de/apps_programmieren_fuer_iphone_und_ipad/

So wie ich das verstanden habe, kannst du von deinem App aus ebenfalls einen Json-String absetzen, welches du dann über dein Script auswerten kannst.
 
Also wenn es um sensible Userdaten geht, die von der API abgeholt werden, brauchst du auf jedenfall eine Authentifizierung. OAuth ist für APIs sicherlich gut geeignet.
Zu dem brauche ich das wirklich: JA, die Daten stehen sonst ungeschützt im Internet. Außerdem hat jeder User normalerweise unterschiedliche rechte, die ihm dann nur Zugriff auf einen Teil der Daten erlauben.
Um eine schöne REST API aufzubauen, lies bitte dieses Tutorial: http://net.tutsplus.com/tutorials/php/laravel-4-a-start-at-a-restful-api/?search_index=5
Die halbe Stunde lohnt sich!

Achja, und nochn kleiner Linktip am Rande, der nichtmehr zum eigentlichen Thema passt: http://phonegap.com/
 
Danke, PhoneGap nutze ich nicht - das soll schon alles nativ umgesetzt werden.

Angenommen ich habe nun 2 Eingabefelder für Usernamen und Passwort in meiner App, dann muss ich ich meiner Api eine Funktion haben, die diesen Usernamen und Passwort mit der Datenbank checkt und im erfolgreichen Fall "true" zurückgibt. Ich hätte jetzt gedacht, dass z.B. der User in der Datenbank einen Token bekommt, der anstatt "true" zurückgeliefert wird. Die App kann diesen Token dann bei jedem zukünftigen Request benutzen und der Webservice überprüft ob der Token zu der User-ID passt... das war es doch oder?

Ich finde OAuth für meine Zwecke etwas überdimensioniert. Ich würde z.B. gerne wissen wie die offizielle Twitter/Facebook App umgesetzt sind, da ich OAuth bisweilen so einschätze das dieses Werkzeug besonders hilfreich ist wenn man 3rd party Apps schreibt, die die User credentials in der App abspeichern würden und das eben nicht tun sollen...das kann meine App aber ja gerne tun, denn mir "gehören" ja Client und Server...
 
OAuth steht auch in der Kritik, tiefe Risse im Sicherheitssystem zu haben (zB Hier). Gerade weil Du beides unter Kontrolle hast, Backend und Frontend, kannst Du Dir Deine Auth doch selbst schreiben.

mfg chmee
 
Da der Thread noch nicht erledigt ist, möchte ich hier was beisteuern:

Ich habe für meine Studienarbeit einen REST-Service programmiert, der auf dem Ipad mit einer nativen App kommuniziert.
Die REST-Api wurde mit Restler (http://restler3.luracast.com/) umgesetzt, die Authentifikation basiert auf einer Eigenentwicklung mit HMAC, ähnlich der Authentifiktaion bei den Amazon Services.

Zum Einlesen kann man hier anfangen: http://rc3.org/2011/12/02/using-hmac-to-authenticate-web-service-requests/

Bei mir werden bei jedem Request, der verifiziert werden muss folgende Customheader mitgesendet von der IPhone-App:
-timestamp
-username
-signature

Ich berechne dann am Server die signatur basierend auf der URL, dem timestamp und dem Benutzernamen und hashe das mit dem gespeichertem Passwort in der DB.
Ist der Hash gleich, ist der Request ok, ansonsten nicht.

Einfach und effizient, da nicht das Passwort mitgesendet werden muss.
Bei Fragen einfach melden.

Gruß
 
Zurück