AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi GoogleSignInApi zur Verifizierung von Back-End Requests / Daraja Framework
Thema durchsuchen
Ansicht
Themen-Optionen

GoogleSignInApi zur Verifizierung von Back-End Requests / Daraja Framework

Ein Thema von mjustin · begonnen am 17. Jul 2016
Antwort Antwort
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#1

GoogleSignInApi zur Verifizierung von Back-End Requests / Daraja Framework

  Alt 17. Jul 2016, 14:34
Hallo,

hat FireMonkey (Android) Zugriff auf die GoogleSignInApi Klasse? Darüber kann eine App ein Google Token abrufen, das dann an eigene HTTP Back-End Server übermittelt und dort via Google API validiert und weiter genutzt werden kann:
Code:
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
    GoogleSignInAccount acct = result.getSignInAccount();
    String idToken = acct.getIdToken();
    mIdTokenTextView.setText("ID Token: " + idToken);
    // TODO(user): send token to server and validate server-side
} else {
    mIdTokenTextView.setText("ID Token: null");
}
Ich habe das mit einem Android Studio Beispiel-Projekt getestet und das erzeugte Token dann serverseitig (mit Indy) benutzt, um von Google Informationen zu diesem Token abzurufen.

Wenn das Token gültig ist, erhält der Server von der Google API eine JSON Datei die etwa so aussieht:
Code:
{
 "iss": "https://accounts.google.com",
 "sub": "110169484474386276334",
 "azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "iat": "1433978353",
 "exp": "1433981953",
 "email": "testuser@gmail.com",
 "email_verified": "true",
 "name" : "Test User",
 "picture": "https://lh4.googleusercontent.com/-kYgzyAWpZzJ/ABCDEFGHI/AAAJKLMNOP/tIXL9Ir44LE/s99-c/photo.jpg",
 "given_name": "Test",
 "family_name": "User",
 "locale": "en"
}
Falls der Java Code in FireMonkey im Prinzip abbildbar ist, kann das Token mit wenig Aufwand für die Verfizierung von Requests an in Delphi geschriebenen Back-End Servern eingesetzt werden.

Beispielcode für die Anfragen zwischen dem Android Gerät und dem Back-End Server einerseits, und zwischen Back-End Server und dem Google OAuth 2 Service andererseits würde ich dann im Daraja Framework einbauen.

Der Back-End Server kann anhand des Tokens prüfen:
* welche app-spezifische Client-ID die App verwendet (diese steht im Feld "aud" des Tokens und kann benutzt werden um gefälschte Token zu erkennen)
* dass das Token von Google erstellt wurde
* dass Google das Token an ein Gerät sendete an dem der Benutzer mit dem Google-Konto angemeldet ist das über die Email Adresse in "email" eindeutig identifiziert ist

Im Gegensatz zu einfacheren Methoden, bei denen ein Gerät sich beim Back-End Server identifizieren muss, wird mit dem Token keine Benutzer-ID wie zum Beispiel die Email Adresse des Google Kontos übermittelt.
Stattdessen sendet der Back-End Server nur das vom Client per HTTPS übermittelte Token an einen Google Service, der daraufhin die Benutzerangaben an den Back-End Server zurückgibt.

Bei Interesse melde ich mich hier wieder wenn es im Daraja Framework etwas Neues zum Thema Google Sign In APIs gibt.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz