Vor einigen Tagen habe ich den Auftrag erhalten, eine Android und iPhone App zu programmieren. Beide Apps sollten an eine zentrale Datenbank Schnittstelle angeschlossen sein. Oben drauf soll noch ein Web Application über den Browser erreichbar sein, welche die Kundendaten ebenso aufbereiten kann. Ein recht spannender Job, da ich neben dem Frontend eine umfangreiche API zur Verfügung stellen muss. Ganz im Sinne des „Don’t repeat yourself“-Paradigmas am besten natürlich ein Dienst, der gleichermaßen alle drei Applikationen bedient. Ein Glück für mich, dass im PHP Framework Laravel in der neuesten Version 5.3 Passport integriert ist.
Laravel 5.3 & Passport
Seit es Laravel gibt, ist es das PHP Framework meiner Wahl. Gut also, dass wir mit Passport jetzt innerhalb von wenigen Minuten ein API Fundament erstellen können. Dadurch kann die Arbeit an der eigentlich Anwendungen beginnen, ohne dabei das Rad neu erfinden zu müssen. Über eine URL wie etwa example.de/api/user/{deineKundenID} können alle relevanten Daten eines Kunden abgerufen werden. Das gleich funktioniert mit example.de/api/orders/user/{deineKundenID} um alle Bestellungen eines Kunden zu sehen. Doch wozu braucht man so eine API überhaupt?
Sicherheit durch OAuth 2.0
Natürlich sollen Kundendaten nur von denen gesehen werden, die dazu berechtigt sind. Passport löst das mit der derzeit sicherlich besten clientseitigen Validierung OAuth 2.0. Ein Protokoll, dem auch die Grossen wie Google und Facebook bei ihren APIs vertrauen. Statt ständig Usernamen und Passwort über einen Request zu versenden, erstellt Passport einen Authentification Key, welcher zusammen mit einer Prüfsumme an die API übergeben wird. Stimmen alle Werte mit der Anwendung überein, werden die entsprechenden Daten ausgegeben.
Konsequente Trennung von Style und Datenbank
Wenn man den Auftrag hat, mehrere Anwendungen in verschiedenen Programmiersprachen mit den gleichen Datensatz zu verbinden, ist es hinderlich, wenn unnötige Fragmente mit übermittelt werden. Die Passport API übermitteln ihre Daten im JSON Format. Ein Datenformat, welches von allen gängigen Programmiersprachen gelesen werden kann und dabei so minimalistisch wie möglich bleibt. Daten können dadurch zentral und einheitlich aufbereitet werden. Dadurch ist auch egal, ob der Look einer Anwendung wie bei Android über XML-Stylesheets generiert wird, oder wie im Falle von Webanwendung durch HTML und CSS. Die jeweiligen Anwendungen kriegen lediglich die wichtigen Informationen. Dadurch beschleunigt sich auch die Übertragungszeit.
Anbindung an Drittanbieter
Die API bietet es nicht nur an, eigene Anwendung an die Datenbank anzubinden. Auch Drittanbieter können auf Kundendaten zurückgreifen – selbstverständlich nur mit Erlaubnis des Nutzers. Was zunächst gruselig klingt, haben die meisten schon in der ein oder anderen Anwendung gesehen. So bietet zum Beispiel Spotify die Möglichkeit, sich direkt mit seinen Facebook- oder Googledaten einzuloggen, statt eine neues Benutzerkonto zu eröffnen. Passport bietet dieses Feature auch. Drittanbieter müssen lediglich einen Key generieren und eine Callback-URL angeben.
Danke, Laravel!
Als Ein-Mann-Unternehmen einen solchen Auftrag zu verwirklichen ist eigentlich fast unmöglich. Mit den Werkzeugen, die mir Laravel an die Hand gibt, kann ich mich jedoch komplett auf die eigentliche Aufgabe konzentrieren, statt mir Sorgen über Sicherheitsaspekte oder die Architektur machen zu müssen. Dafür gibt’s ein fettes Danke an Laravel.