2014-09-16 9 views
11

10 können Android-Entwickler überprüfen, dass die Anforderungen ihrer Server von einem Android-Gerät kommen.GoogleAuthUtil wie Geräteauthentifizierung für iOS zu überprüfen, dass Anforderungen von einem Apple-Gerät

Das Gerät erhält ein Token von Google basierend auf dem mit dem Gerät verknüpften Google-Konto, dann werden die Anfragen vom Gerät mit diesem Token an den Server gesendet, wo der Server Google fragt, ob das Token gültig ist. Alle Schlüssel werden aus der App-Quelle herausgehalten, sodass böswillige Benutzer die App nicht knacken und auf private Schlüssel und Fudge-Anfragen an den Server zugreifen können.

Ich habe nach einer Weile gesucht und es scheint, dass Apple nichts dergleichen anbietet, aber ich hatte gehofft, dass es etwas funktionell ähnliches gab, das ich für iOS verwenden könnte.

Antwort

1

Update

Während die implizite Annahme in der Frage vernünftig erscheint, ist es nicht wirklich wahr. Weitere Lesungen der Google-Quellen zeigen, dass der Zweck von Auth Util (und später Firebase) darin besteht, den Benutzer zu authentifizieren und den Server zu sichern. Da der Server nur Netzwerkverkehr sieht, ist es möglich, den Datenverkehr von einem anderen Client zu replizieren.

Darüber hinaus ist die Definition von Android ziemlich verschwommen, da OEM das Basis-Betriebssystem an ihre Bedürfnisse anpassen.

Dies ist wahrscheinlich falsch

Eine Möglichkeit ist es, die Apple Push Notification zu verwenden. Sie können ein Gerät und push notifications specifically to it registrieren. Wenn Ihre App geladen wird, sendet sie eine Anfrage an den Server mit der Nummer device token und empfängt im Wesentlichen einen Sitzungscookie über den APN.

Ein Nachteil ist, dass it is not encrypted. Sie können dies leicht lösen, indem Sie in der Anforderung einen zufällig generierten symmetrischen Schlüssel senden. Der Cookie, den Sie erhalten, wird auf dem Server verschlüsselt und mit dem gleichen Schlüssel auf dem iOS-Gerät entschlüsselt.

Dies löst das Problem der Schlüsselspeicherung in der Quelle und belegt, dass die Anfragen von einem iOS-Gerät kamen.

Natürlich kann dies vereinfacht werden, indem ein Zertifikat erstellt wird, in der Schlüsselkette gespeichert wird und der private Schlüssel während der Registrierung zur Speicherung an den Server gesendet wird. Nach der ersten Registrierung und Validierung mit APN können nachfolgende Nachrichten unter Verwendung des öffentlichen Schlüssels Geräte-ID + Zertifikat signiert werden.

Ein letzter Punkt ist, dass APN auch verwendet werden kann, um OSX-Geräte zu registrieren. Ich habe noch nicht herausgefunden, wie ich diese (noch) ausschließen kann.

Haftungsausschluss: Es war ein langer Tag des Schreibens von Spezifikationen. Ich bin einigermaßen zufrieden mit dem Mechanismus, bei dem ich das iOS-Gerät zunächst mit APN registriert habe. Ich habe die Verschlüsselungsteile vielleicht falsch verstanden. Wenn ja, bitte sanft kommentieren.