How to do cross-domain authentication sicher?
So. Ich habe die domain A.com, von denen die Benutzer-Authentifizierung erfolgt auf der domain B.com. Derzeit habe ich es so eingestellt, dass der login-form veröffentlicht werden B.com, die (wenn erfolgreich) setzt die session-cookie und feuert Umleitung zu A.com/loggedin. Jedoch, wie die form ist gebucht B.com und der cookie wird festgelegt, dass die domain, wenn ich JSON-Anfrage aus A.com das session-cookie ist nicht verfügbar ich habe keine Ahnung, ob Sie angemeldet sind oder nicht. Die Frage ist dann, wie löst man das Problem?
Ich habe grübelt über eine Lösung, wobei ich hinzufügen würde, ein Zeichen, um die redirect-uri, die dann verwendet werden könnte, für eine Zeit authentifizierte Sitzung mit der Schöpfung A.com (der browser kann mit diesen token auth die session mit B.com, so dass der cookie gesetzt werden A.com und würde auf JSON requests. Danach wird der token wäre ungültig ofc).
Allerdings bin ich mir nicht sicher, wie sicher wäre diese Lösung? Oder gibt es eine andere sichere Lösung?
- wie über sso-Lösung. A.com Authentifizierung erforderlich ist, dann umleiten der sso-server(S.com), S.com zurück zu Benutzer eine longin-Formular, post S.com. S.com empfangen und generieren Sie einen token und leitet Sie zur A.com mit dem token, A.com Holen Sie sich die Token, rufen Sie S.com Holen logined userinfo.
- und auch einige, openid Lösung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre aktuelle Lösung sieht gut aus für mich und kann verwendet werden, in diesem Szenario. Aber für Ihre Sicherheit sorgen, statt eine plain-token, den Sie möglicherweise wollen, verschlüsseln Sie es mit einigen guten Verschlüsselungsverfahren und basiert auf, die Sie konfigurieren können Ihren Servern zu verschlüsseln und zu entschlüsseln, die
authentication token
bevor Sie es verwenden. Die einzige Sache ist, dass Sie brauchen, um zu wählen, den besten Algorithmus für den Fall.Andere als diese Lösung können Sie denken, um session-management-tools.
Session Migration
,Session Replication
und Session Sharing sind die Optionen, die ich denken kann.Hier ist Link für eine Lösung von Oracle für das session-sharing, was ich denke, kann in Ihrem Fall helfen.
Security Assertion Markup Language (SAML, ausgesprochen "sam-el"[1]) ist eine XML-basierte offene standard-Datenformat für den Austausch von Authentifizierungs-und Autorisierungsdaten zwischen den Parteien, insbesondere zwischen einem identity provider und einem service provider. SAML ist ein Produkt, das von der OASIS Security Services Technical Committee. SAML stammt aus dem Jahr 2001; das neueste update von SAML ist von 2005.
Ist die wichtigste Voraussetzung, dass SAML-Adressen web-browser single sign-on (SSO). Single-sign-on-Lösungen sind Häufig auf der intranet-Ebene (Verwendung von cookies, zum Beispiel), aber die Ausweitung dieser Lösungen über das intranet problematisch und führte zu die Verbreitung von nicht-interoperable proprietären Technologien. (Ein weiterer neuerer Ansatz zur Bewältigung der browser SSO problem ist das OpenID-Protokoll.)
Die SAML-Spezifikation definiert drei Rollen: der AUFTRAGGEBER (in der Regel ein Benutzer), den identity provider (IdP) und service provider (SP). In der use-case gerichtet, die von SAML-der AUFTRAGGEBER fordert einen service von dem service-provider. Der service-provider anfordert und erhält eine identity assertion identity provider. Auf der Grundlage dieser Behauptung, die service-provider eine access-control-Entscheidung – in anderen Worten, Sie kann entscheiden, ob eine Dienstleistung für den AUFTRAGGEBER verbunden.
Vor der Auslieferung der identity assertion an den SP, IdP anfordern kann einige Informationen aus dem Haupt – wie Benutzername und Passwort – zur Authentifizierung des Auftraggebers. SAML spezifiziert die Aussagen zwischen den drei Parteien: insbesondere die Nachrichten, die behaupten, die Identität, die übergeben werden vom IdP an den SP. In SAML, einem identity provider bereitstellen kann, die SAML-Behauptungen, zu viele Dienstleister. Umgekehrt, ein SP kann verlassen sich auf und Vertrauen Behauptungen von vielen unabhängigen Vertriebenen.
SAML spezifiziert nicht die Methode der Authentifizierung beim identity provider; Sie können einen Benutzernamen und ein Passwort oder eine andere form von Authentifizierung, inklusive der multi-Faktor-Authentifizierung. Ein Verzeichnis-Dienst, mit dem Benutzer-login mit Benutzername und Passwort, ist eine typische Quelle von Authentifizierungs-Token (z.B. Passwörter) bei einem identity provider. Die beliebten gemeinsamen internet-social-networking-Dienste bieten auch identity-services, die in der Theorie könnte verwendet werden, um die Unterstützung für SAML-Börsen.
http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language
Ja, es gibt sicherere Optionen.
Für Single-Sign-On es ist ein offener standard namens OpenID/verbinden (über oAuth2.0)
Für die gemeinsame Nutzung von Ressourcen, Autorisierung und Authentifizierung gibt es oAuth.
Dinge zu beachten.
Nutzen, die bereits Geleistete Arbeit der Gemeinschaft.
oAuth 1.0 a (noch gemeinhin als das sicherste Muster bisher) - http://tools.ietf.org/html/rfc5849
oAuth 2 - http://oauth.net/2/ (mit openID für die Zulassung basiert auf oAuth2)
oAuth 2 ist KEIN Ersatz für oAuth-1a - es ist eine völlig neue (weniger sichere) Idee ist stark abhängig von SSL - oAuth1a ist immer noch die sicherste - aber immer noch nur so gut wie Ihre Umsetzung und Verständnis der potenziellen Schwächen.
Sind Sie wahrscheinlich auf der Suche für openID connect-Ideen - aber die oAuth-Informationen ist auch nützlich...
SO - Ausgangspunkt einige Unterschiede
openID connect (geschichtet auf oAuth 2)
oAuth-Konzepte
ALSO - Lesen lohnt sich
Unter Verwendung eines Authentifizierungs-token sollte funktionieren, aber betrachten Sie diese Punkte:
Diese beiden Punkte sind sehr kritisch meiner Meinung nach um zu verhindern, dass die Entführung der Authentifizierung ein token wiederverwendet. Auch begrenzen Sie die Zeit, die der token gültig ist (30 Sekunden sollte in Ordnung sein) um zu verhindern, dass Missbrauch der alte/nicht benutzte Token.