2016-07-29 19 views
0

Ich versuche, einen ordnungsgemäßen OAuth2-Authentifizierungsablauf für eine Eltern/Kind-Beziehung zu erstellen.
App-A und App-B sind zwei unabhängige Anwendungen. App-A öffnet App-B in einem iframe wenn Klicks auf einen Link von App-A.Entwerfen des Ablaufs der OAuth2-Authentifizierung

Ich bin verantwortlich für die Wartung App-B.
Wie kann ich den Nachrichtenfluss so gestalten, dass App-B Benutzer erkennt, die von App-A kommen, und dieselbe Sitzung für beide Anwendungen beibehalten soll?

Dies ist der Fluss ich so weit gekommen sind:

  1. App-A eine Client-ID und Geheimschlüssel zu App-B vor der Interaktion bieten.

  2. Benutzer stellt eine Anfrage an GET /person Endpunkt App-B mit einer parentId.

  3. App-B wird dann eine Anfrage an App-A Server mit Client-ID, Geheimschlüssel und redirect-url Satz als GET /person sendet.

Nun, was App-A-App-B senden wird die Sitzung Informationen von authentifizierten Benutzern zu übergeben.

Wenn der Fluss keinen Sinn macht, können Sie es loswerden

Antwort

0

Ihr Problem ist ähnlich Sitzung in mehreren Anwendungen zu erhalten.

Das Problem mit Ihrem Ansatz ist es, Sie diesen Antrag von Front-End oder einen Weg zu AppA machen müssen, die einige Ideen hier id/Geheimnis

aussetzt Client (die aktuelle Benutzersitzung unterhält) sind Sie es erreichen könnte,

Sind beide Anwendungen unter derselben übergeordneten Domäne? wenn ja,

Wie appA.domain.com und appB.domain.com Dann, nach erfolgreicher Authentifizierung können Sie einig Sitzungs-ID-Cookie in übergeordneter Domäne * .. domain.com Dann setzen Von AppB können Sie die aktuelle Benutzersitzung abrufen, von der Sie den AccessToken auch erhalten können.

Wenn beide Anwendungen in anderer Domäne sind, dann

Sie einig gemeinsamen Auth-Server haben müssen, die Sitzung häufig beibehalten werden, so dass, wenn appA Lasten und fand keine Sitzung verfügbar, dann kann es zu gemeinsamem Auth umleiten Server, der wiederum die Sitzung überprüft (wenn sich der Benutzer nicht anmeldet) und dann die Daten an appA zurücksendet

Der gleiche Fluss gilt für appB.

Überprüfen Sie auch diesen Link http://merbist.com/2012/04/04/building-and-implementing-a-single-sign-on-solution/