2017-11-24 5 views
0

Ich habe SiteA, die Benutzerinformationen speichert (Name, Büro, Abteilung usw.). Das Back-End hat REST WS verfügbar gemacht, das die Informationen an das Front-End liefert. Die Website verwendet Google OAuth2-Authentifizierung - Nutzer melden sich über ein Google-Konto an. Mit OAuth2 lassen wir Google die Anmeldung vornehmen (ohne nach Benutzername und Passwort zu fragen). Google generiert einen Autorisierungscode, der mit der client_id und client_secret verwendet wird, um ein Token für den Benutzer zu generieren.Programmgesteuertes Anmelden bei Google OAuth2

Ich habe SiteB. Ich erstelle einen Job, der einmal am Tag ausgeführt wird. Ich muss es programmgesteuert bei SiteA anmelden, damit ich ein Sicherheitstoken abrufen kann, das ich in Anforderungen an die von SiteA bereitgestellte REST-WS-API verwenden und die benötigten Informationen abrufen kann.

Ich konnte eine ähnliche Frage online nicht finden. Alles endet normalerweise damit, dass der Benutzer einen Browser öffnet und zu einer entsprechenden URL navigiert.

Etwas Ähnliches ist Google Drive API - OAuth2.0: How to Automate Authentication Process? Doubts and Questions, aber es geht um eine Verbindung zu Google Drive ohne Anmeldung.

Ich fange an zu bezweifeln, dass es möglich ist. Hat jemand herausgefunden, wie man diese Art der Kommunikation zwischen Systemen implementiert?

Die einzige Option, die ich könnte, ist die Verbindung zu SiteA DB und extrahieren Datensätze manuell, aber das würde die Anmeldung in SiteA und SiteB duplizieren.

+0

Dann müssen Sie eine interne Umleitung von SiteA zu SiteB mit Access-Token und anderen Informationen hinzufügen. Was Sie versuchen zu tun, wird nicht empfohlen. –

+0

Was ist der empfohlene Weg, um mit einem solchen Fall umzugehen? SiteA wird von vielen Benutzern als SiteB verwendet. Sie teilen nicht die gleiche Datenbank, haben aber gemeinsame Tabellen. Es wird nicht empfohlen, SiteA in irgendeiner Weise zu ändern, um das oben beschriebene zu erreichen. –

+0

Der Benutzer hat SIteA authentifiziert, aber Sie möchten diese Daten auf SiteB. Wenn Sie in Zukunft weitere Funktionen benötigen, müssen Sie Methoden erstellen, um Daten von SiteA oder SiteB zu senden. Also, dies beinhaltet einen Overhead. Schließlich ist es viel sauberer, Benutzer nach der Authentifizierung für SiteB ordnungsgemäß an SiteB umzuleiten. Auf diese Weise sieht der Benutzer nicht die Weiterleitungen, über die einige Browser warnen, und einige Sicherheitsmechanismen verbieten dies. –

Antwort

0

Was ich gefragt habe, ist in der Zeit des Schreibens der Frage nicht möglich. Was wir das Problem zu lösen tat, ist das Leben des Token für das Konto zu erweitern, die zu SiteA verwendet wird um sich einzuloggen und es im Header der Anforderung von SiteB gesetzt:

connection.setRequestProperty("Authorization", token); 

Wir änderten die Lebensdauer des Tokens aus der Datenbank und da dies interne Systeme sind, ist die lange Lebensdauer des Tokens kein Problem.

Eine andere Möglichkeit ist, How to get offline token and refresh token and auto-refresh access to Google API zu folgen und ein Offline-Token zu generieren, aber die Idee ist immer noch die gleiche.

Ich hoffe, das hilft jemandem.

Verwandte Themen