Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Wege um APP mit PC-Server-Software zu verbinden (https://www.delphipraxis.net/200958-wege-um-app-mit-pc-server-software-zu-verbinden.html)

QuickAndDirty 11. Jun 2019 14:13

Wege um APP mit PC-Server-Software zu verbinden
 
Hallo ich suche Wege um möglichst benutzerfreundlich eine App mit einer ganz bestimmten Server-PC-Anwendung zu verbinden,so dass die App mit der Software der Organisation zu der der App-Nutzer gehört verbunden wird.

-Aktuelles verfahren(ich suche aber ein besseres, wenn möglich):
1.Desktopsoftware der Organisation hinterlegt ihre Einstellungen (Server+Port+Benutzer+Passwort) auf dem Server des Herstellers unter dem Schlüssel von Organisationsname und Lizenznummer.
2.User der App gibt Organisationsname und Lizenznummer in der App ein, diese werden zum Suchen der Einstellungen auf dem Server des Herstellers verwendet.
3.Verbindungsdaten werden ausgetauscht der Server des Herstellers ist nicht mehr notwendig.
Nachteil: Organisationsnamen und Lizenznummern sind kompliziert einzugeben auf einem Smartphone.

-Übermitteln der Verbindungseinstellungen per SMS :
1.Desktopsoftware übermittelt die Verbindungseinstellungen, per SMS über das GSM modem...
2.App liest die SMS aus und übernimmt die Konfiguration.
Nachteil: Kaum eine organisation hat ein GSM Modem an ihren PCs. Und nicht alle Tabletts können SMS empfangen!

-Übermitteln der Verbindungseinstellungen per SMS+Pairingcode:
1.Desktopsoftware der Organisation hinterlegt ihre Einstellungen (Server+Port+Benutzer+Passwort) auf dem Server des Herstellers unter einem Pairingcode ab. Auch alle Telefonnummern der Smartphones der Benutzer werden hinterlegt.
2.HerstellerServer sendet SMS mit Pairingcode der zu den Einstellungen die hinterlegt wurden passt an alle Benutzer Smartphones.
3.App liest sms Aus und fordert unter verwendung des Pairingcode die Einstellungen vom HerstellerServer an.
Nachteil: Nicht alle Tabletts können SMS empfangen! Erhöhte Verantwortung beim Hersteller, evtl. erhöhte kosten. Viele Telefonnummern werden beim Hersteller gespeichert werden.

-Einstellungen per QRCode senden:
1.Desktopsoftware der Organisation erzeigt einen QR-Code mit verbindungsdaten (Server+Port+Benutzer+Passwort).
2.Der Code wird "IRGENDWIE" zu den Benutzern der App(jeder mit anderem benutzernamen..) übermittelt so das er auf einem Monitor, Papier oder einem 2.ten Handy angezeigt wird.
3.Benutzer scanned den Code mit der App.
Nachteil: Nicht alle Geräte haben einen Autofocus können also nicht scannen. Die übermittlung des QR-codes ist ein Problem.

-Übermitteln der Verbindungseinstellungen per humanreadable Pairingcode:
1.Desktopsoftware der Organisation hinterlegt ihre Einstellungen (Server+Port+Benutzer+Passwort) auf dem Server des Herstellers unter einem humanreadable Pairingcode ab.
2.Der Pairingcode wird "IRGENDWIE" den Benutzern mitgeteilt.
3.Benutzer gibt den Pairingcode in der App ein.
4.App fordert unter verwendung des Pairingcode die Einstellungen vom HerstellerServer an.
Nachteil: Humanreadable Pairingcodes müssten zeitlich begrenzt wirksam sein. Schließt falsche Eingaben durch den Benutzer nicht aus. Möglicherweise falsches Pairing durch vertipper.

-Übermitteln der Verbindungseinstellungen per WLAN-MAC als Pairingcode:
1.Desktopsoftware der Organisation hinterlegt ihre Einstellungen (Server+Port+Benutzer+Passwort) auf dem Server des Herstellers unter der MAC-Adresse des WLANs als Pairingcode ab.
2.Apps im selben WLAN fordert unter verwendung des Pairingcode die Einstellungen vom HerstellerServer an.
Nachteil: Desktopsoftware muss im selben WLAN betrieben werden, diese Software läuft aber zum Glück bei 99% aller Instanzen auf PCs mit kabelbasierten LAN. Benutzer der App muss im Gebäude sein...


Habt ihr noch Ideen oder Kritik?
Ich bin dabei das ganze auf
-Übermitteln der Verbindungseinstellungen per humanreadable Pairingcode
umzustellen. Aber ich hätte viel lieber was besseres.

Rollo62 11. Jun 2019 14:25

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Du hast ja schon fast Alles aufgeschrieben.

Wenn ich den Kern der Sache richtig sehe suchst Du nach Wegen um Zertifikate/Token/ o.ä. auf ein bestimmtes Device zu bekommen, bzw. zwischen 2 Devices zu koppeln, richtig ?

Vielleicht wäre dafür noch die Anmeldung per REST-Server und Übertragung eines Lizenztokens oder Zertifikates per Push-Notification auf ein bestimmtes Device sinnvoll.

Ich persönlich würde aber erstmal versuchen das als eigenen, separaten REST-Server, oder "Anmelde"-Server aufzubauen, und dann bei erfolgreicher Authentifizierung darüber Daten/Zertifikate/etc. auszutauschen.
Damit wäre man nicht ständig an Firebase oder Apple-Push gebunden.
Vorteil: Auf dem Anmelde Server kannst Du Alles machen (OAuth2) was Du willst
Nachteil wäre das man wohl eine WiFi oder Daten-Verbindung braucht, und Du musste App, Desktop und Server programmieren.

mjustin 11. Jun 2019 14:32

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Was spricht dagegen, die das Google Konto zur Anmeldung am Unternehmensserver zu verwenden?

- Benutzer startet App, diese zeigt einen Dialog zur Kontoauswahl an
- App verwendet den Standardmechanismus um für das Konto ein Token zu erzeigen
- App sendet Token an Unternehmensserver, der das Token vom Google Server gegenprüfen läßt
- Der Server erhält von Google über die Token-Verfifizierung die E-Mail Adresse des Benutzers
Anhand der E-Mail Adresse kann der Server die für diesen Benutzer gültigen Konfigurationsdaten ermitteln
- App erhält alle benötigten Konfigurationsdaten, falls der Server das Token akzeptiert (geptüft) hat

Detaillierte Beschreibung: https://developers.google.com/identi...d/backend-auth

Vorteil: es müssen keine Benutzernamen / Passwörter zwischen App und Server ausgetauscht werden.
Lediglich auf dem Gerät selber muss man sich authentifizieren (PIN / Gesten / Gesichtserkennung etc.).

Rollo62 11. Jun 2019 14:40

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Ok, dann werfe ich nochmal das hier und das rein, denn wo Google ist kann Facebook nicht weit sein :lol:

mjustin 11. Jun 2019 14:44

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Zitat:

Zitat von Rollo62 (Beitrag 1434344)
Ok, dann werfe ich nochmal das hier und das rein, denn wo Google ist kann Facebook nicht weit sein :lol:

Voraussetzung ist allerdings: "App ist mit Facebook registriert".

Im Unterschied dazu ist für eine reine Google-basierte Anmeldung keine Zusatzsoftware (Facebook) auf dem Gerät erforderlich, oder eine Registrierung der App bei Facebook. Bei einer Single-Signin Lösung über Facebook muss man dort ein Konto haben (was nicht immer der Fall ist). Dagegen hat ein Besitzer eines Android Gerätes nahezu immer auch einen Google Account.

HolgerX 11. Jun 2019 14:59

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Hmm..

Zitat:

Zitat von mjustin (Beitrag 1434346)
Zitat:

Zitat von Rollo62 (Beitrag 1434344)
Ok, dann werfe ich nochmal das hier und das rein, denn wo Google ist kann Facebook nicht weit sein :lol:

Voraussetzung ist allerdings: "App ist mit Facebook registriert".

Im Unterschied dazu ist für eine reine Google-basierte Anmeldung keine Zusatzsoftware (Facebook) auf dem Gerät erforderlich, oder eine Registrierung der App bei Facebook. Bei einer Single-Signin Lösung über Facebook muss man dort ein Konto haben (was nicht immer der Fall ist). Dagegen hat ein Besitzer eines Android Gerätes nahezu immer auch einen Google Account.


Beides benötigt ein Konto! Entweder von Google oder Facebook... ;)

Hmm.. Und mein PC hat kein Google Account, dann müsste dieser wohl was von Microsoft nehmen..

mjustin 11. Jun 2019 15:04

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Zitat:

Zitat von HolgerX (Beitrag 1434347)
Beides benötigt ein Konto! Entweder von Google oder Facebook... ;)

Hmm.. Und mein PC hat kein Google Account, dann müsste dieser wohl was von Microsoft nehmen..

Mein Vorschlag bezieht sich nur auf 'normale' Google Android Geräte. Für iOS muß man eine andere Lösung finden.
Und es ist die direkt an das Gerät gekoppelte Kontoinformation, die dabei verwendet wird. Die mit der Geräteentsperrung den Benutzer authentifiziert.

Für PCs würde man ein Microsoft Konto verwenden, das dann über "Hello" den Fingerabdruck o.ä. nutzen würde.

Alle Drittanbieter (Facebook, Wordpress, GitHub) sind wesentlich unsicherer, es sei denn sie verwenden Zwei-Faktor-Authentifizierung.

Rollo62 11. Jun 2019 15:04

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Deshalb bin ich ja ganz klar für den EIGENEN Server, auch wenn es etwas Mehraufwand ist.

QuickAndDirty 11. Jun 2019 15:08

AW: Wege um APP mit PC-Server-Software zu verbinden
 
OK, das ist viel...Bitte ruhig mehr posten!
Ich muss kurz jemand anrufen... dann lese ich es mir genau durch.

BTW.
Wenn ich HerstellerServer sage meine ich nicht Google oder Apple sondern meinen SoapServer der bei mir läuft.
Die DesktopSoftware , die App, Der Soapserver sind alles eigen Eigentwicklungen.

mjustin 11. Jun 2019 15:29

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1434351)
Wenn ich HerstellerServer sage meine ich nicht Google oder Apple sondern meinen SoapServer der bei mir läuft.
Die DesktopSoftware , die App, Der Soapserver sind alles eigen Eigentwicklungen.

Klar, ist so angekommen. Eigener Server ist schon die halbe Miete.

Das was am meisten Kopfzerbrechen macht ist das sichere Authentifizieren. Und idealerweise verläßt kein Benutzername und kein Passwort das Gerät, auf dem man sich anmeldet.
Vorteil: der Server muss weder Passwörter speichern, noch sich mit der Anmeldung befassen. Er erhält nur noch ein Identifikations-Token von der App, das Google anhand des Benutzerkontos (Profils) auf der App ausgestellt hat.

Im Gegensatz dazu sind alle Verfahren, die über OAuth 2.0 arbeiten, auf einen Server einer dritten Partei angewiesen, bei der man zuvor ein (weiteres) Konto eingerichtet haben muss. Und man meldet sich über einen Webbrowser bei dieser dritten Partei an - mit Benutzername und Passwort. Nur falls man dort aktuell schon angemeldet ist, entfällt die erneute Anmeldung.

Fazit: am sichersten ist es, die Authentifizierung direkt von iOS oder Android ausführen zu lassen, und danach nur noch ein vom Betriebssystem erzeugtes Identifikations-Token zu verwenden um mit dem eigenen Server zu kommunizieren.

Moombas 12. Jun 2019 07:28

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Nur ein paar Anregungen an den TE:

Zitat:

"Nachteil: Organisationsnamen und Lizenznummern sind kompliziert einzugeben auf einem Smartphone."
Könnte man über deinen genannten 4. Punkt lösen
Das könntest du über das Scannen eines Bar-/ oder QR-Codes lösen, jedoch müsste deine App dafür auf die Kamera entsprechend zugreifen etc. (außer du nutzt ein PDA, der extra für so etwas gedacht ist, da diese von vielen auch als Smartphone bezeichnet werden und du keinen Hersteller nennst wollte ich den Gedanken nicht außen vor lassen).
Ggf. lohnt sich der Schwenk auch auf die PDA's mit extra Scanner, da diese App-Unabhängig eingesetzt werden können (und zwar immer und ohne eine extra Oberfläche starten/ansprechen zu müssen). Aber das wäre auch eine finanzielle Entscheidung und abhängig vom Einsatzgebiet und ob das die einzige Verwendung des Scanners wäre oder das auch auf andere Aufgaben zu übertragen wäre.
Frage & Tipp: Wer bzw. wo wird denn die Lizenznummer etc. eingegeben? Ggf. kann man temporär einen BT-Handscanner koppeln, dann ist egal ob ein Smartphone eine fähige Kamera hat oder nicht und das Scannen müsste wie eine "Tastatureingabe" sein (ungetestet), benötigt also normalerweise keine extra Ansteuerung und sind schon unter 90€ zu haben. Empfehlen würde ich 2D-Scanner, die dann auch direkt vom Bildschirm scannen können.


Schaue dir mal folgendes Produkt an: Zebra StageNow (Link), dieses macht etwas ähnliches aber funktioniert nur bei Zebra Geräten.

Über die Software werden viele Einstellungen des Android Gerätes festgelegt und dann als mehrfache QR-Codes (PDF417) in einem PDF ausgegeben (incl. eines Google-Bypass-Code für den Ersteinrichtungsassistenten). Der Ablauf sieht Quasi so aus:
  1. Gerät starten (PDA mit integriertem Laser-Scanner)
  2. ByPass-Barcode Scannen, welcher auch StageNow startet
  3. Nun kann man die generierten Barcodes Scannen (oder Audio-Staging oder NFC-Staging, welche wir aber noch nicht genutzt haben), wo alle benötigten Informationen abgelegt sind
  4. Das Gerät lädt eine benötigte App (notwendig zur Kommunikation zu "unserer" zentralen Verwaltungssoftware) herunter und meldet sich bei uns in der zentralen Verwaltungssoftware für weitere Einstellungsprofile etc.

Das ist von der Handhabung etc. für uns fast Zero-Touch und kann auch vom normalen Mitarbeiter ausgeführt werden.

Jumpy 12. Jun 2019 08:24

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Zitat:

Zitat von mjustin (Beitrag 1434355)
Zitat:

Zitat von QuickAndDirty (Beitrag 1434351)
Wenn ich HerstellerServer sage meine ich nicht Google oder Apple sondern meinen SoapServer der bei mir läuft.
Die DesktopSoftware , die App, Der Soapserver sind alles eigen Eigentwicklungen.

Klar, ist so angekommen. Eigener Server ist schon die halbe Miete.

Das was am meisten Kopfzerbrechen macht ist das sichere Authentifizieren. Und idealerweise verläßt kein Benutzername und kein Passwort das Gerät, auf dem man sich anmeldet.
Vorteil: der Server muss weder Passwörter speichern, noch sich mit der Anmeldung befassen. Er erhält nur noch ein Identifikations-Token von der App, das Google anhand des Benutzerkontos (Profils) auf der App ausgestellt hat.

Im Gegensatz dazu sind alle Verfahren, die über OAuth 2.0 arbeiten, auf einen Server einer dritten Partei angewiesen, bei der man zuvor ein (weiteres) Konto eingerichtet haben muss. Und man meldet sich über einen Webbrowser bei dieser dritten Partei an - mit Benutzername und Passwort. Nur falls man dort aktuell schon angemeldet ist, entfällt die erneute Anmeldung.

Fazit: am sichersten ist es, die Authentifizierung direkt von iOS oder Android ausführen zu lassen, und danach nur noch ein vom Betriebssystem erzeugtes Identifikations-Token zu verwenden um mit dem eigenen Server zu kommunizieren.

Es muss aber der Firma die Emailadresse des Google-Accounts bekannt sein, oder? Darüber erfolgt doch nach Akzeptanz des Tokens durch Google die Identifizierung des Mitarbeiters für die eigene Firma?

mjustin 12. Jun 2019 12:38

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Zitat:

Zitat von Jumpy (Beitrag 1434404)
Es muss aber der Firma die Emailadresse des Google-Accounts bekannt sein, oder? Darüber erfolgt doch nach Akzeptanz des Tokens durch Google die Identifizierung des Mitarbeiters für die eigene Firma?

Ja, die E-Mail Adresse ist Voraussetzung. Diese muss über eine sichere Verbindung auf dem Server hinterlegt werden, mit den zugeordneten Konfigurationsdaten.

In Lösung 2 und 3 werden die Mobiltelefonnummern des Benutzer benötigt, um die Konfigurationsdatenzu versenden - prinzipiell scheint die Verwendung personenbezogener Daten nicht ausgeschlossen zu sein.

QuickAndDirty 13. Jun 2019 14:02

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Zitat:

Zitat von mjustin (Beitrag 1434340)
Was spricht dagegen, die das Google Konto zur Anmeldung am Unternehmensserver zu verwenden?

- Benutzer startet App, diese zeigt einen Dialog zur Kontoauswahl an
- App verwendet den Standardmechanismus um für das Konto ein Token zu erzeigen
- App sendet Token an Unternehmensserver, der das Token vom Google Server gegenprüfen läßt
- Der Server erhält von Google über die Token-Verfifizierung die E-Mail Adresse des Benutzers
Anhand der E-Mail Adresse kann der Server die für diesen Benutzer gültigen Konfigurationsdaten ermitteln
- App erhält alle benötigten Konfigurationsdaten, falls der Server das Token akzeptiert (geptüft) hat

Detaillierte Beschreibung: https://developers.google.com/identi...d/backend-auth

Vorteil: es müssen keine Benutzernamen / Passwörter zwischen App und Server ausgetauscht werden.
Lediglich auf dem Gerät selber muss man sich authentifizieren (PIN / Gesten / Gesichtserkennung etc.).

highlighted by me

Woher weiß die App die IP:Port des Unternehmenservers ?
Mit Unternehmens Server meinst du den Server der bei der Organisation steht oder der beim Hersteller der App?

QuickAndDirty 13. Jun 2019 14:04

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Zitat:

Zitat von Rollo62 (Beitrag 1434344)
Ok, dann werfe ich nochmal das hier und das rein, denn wo Google ist kann Facebook nicht weit sein :lol:

Noch wichtiger als das Login, ist für mich das finden des Servers der Organisation!
Leider Facebook ist kein Partner den ich mir Wünsche.

QuickAndDirty 13. Jun 2019 14:06

AW: Wege um APP mit PC-Server-Software zu verbinden
 
Zitat:

Zitat von mjustin (Beitrag 1434434)
Zitat:

Zitat von Jumpy (Beitrag 1434404)
Es muss aber der Firma die Emailadresse des Google-Accounts bekannt sein, oder? Darüber erfolgt doch nach Akzeptanz des Tokens durch Google die Identifizierung des Mitarbeiters für die eigene Firma?

Ja, die E-Mail Adresse ist Voraussetzung. Diese muss über eine sichere Verbindung auf dem Server hinterlegt werden, mit den zugeordneten Konfigurationsdaten.

In Lösung 2 und 3 werden die Mobiltelefonnummern des Benutzer benötigt, um die Konfigurationsdatenzu versenden - prinzipiell scheint die Verwendung personenbezogener Daten nicht ausgeschlossen zu sein.

Nun alle Daten die ein Arbeitgeber über seine Angestellten haben kann. Sind ok.
Es muss auf einem BYD (jaa ich weiß, sehr böse) Umfeld funktionieren.
Also zu übel darf das verfahren nicht sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:00 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