Ich implementiere Spring SAML in einer App, die mit mehreren Identitätsanbietern konfiguriert ist. Meine IdP-Metadaten-Konfiguration hat mehrere ExtendedMetadataDelegate
mit einem HTTPMetadataProvider
und Alias für jeden IdP. Die App wählt den zu verwendenden Anbieter aus, indem sie SAMLContextProvider
auf ähnliche Weise wie this erweitert.Kann SAMLCredential.getRemoteEntityID() vertrauenswürdig sein?
Wenn ein IdP eine Autorisierung sendet, muss meine App wissen, von welchem IdP sie stammt (verschiedene Anbieter haben unterschiedliche Sicherheitsberechtigungen). Ich mache dies als docs vorschlagen und mit einer benutzerdefinierten SAMLUserDetailsService
und die SAMLCredential.getRemoteEntityID()
zu bestimmen, welche IdP die Anfrage gemacht.
Meine Frage ist, kann ich mich auf die RemoteEntityID verlassen, um den Anbieter zu identifizieren? Was passiert, wenn ein IdP-Anbieter seine Metadaten aktualisiert, um eine andere Entitäts-ID oder sogar eine "gefälschte" Entitäts-ID aufzunehmen, die mit einem anderen Anbieter identisch ist? Wäre es nicht besser, den von uns definierten Peer-Alias zu verwenden?
Ich bin neu bei SAML, daher ist es sehr wahrscheinlich, dass ich ein grundlegendes Konzept verstehe. Ich möchte nur sicherstellen, dass ich mit dieser Konfiguration kein Sicherheitsloch öffne.
Gute Idee beim Testen. Und schön es zu wissen, wenn man einen Fehler hat. Verwenden Sie 'HTTPMetadataProvider', um Ihre IdP-Metadaten zu laden? ' –
Ich denke immer noch, dass es möglich sein könnte, eine Anfrage unter diesem (wahrscheinlich ziemlich ungewöhnlichen) Szenario zu schmieden. Wenn wir mehreren IdPs vertrauen (potentiell feindselig gegeneinander), wenn wir versuchen würden, eine EntityID eines anderen Anbieters zu fälschen, indem wir ihre eigenen Metadaten ändern (was auf meiner Seite von 'HTTPMetadataProvider' neu geladen wird), hätten wir mehrere Metadateneinträge mit die gleiche EntityID (vielleicht nicht möglich?). Anfragen von beiden IdP werden immer noch unterzeichnet und akzeptiert, da wir ihnen beide vertrauen. Der einzige Weg, um sicher zu wissen, ist es, es auszuprobieren! –
Für mich scheint es nur unsicher zu sein, Autorisierungsentscheidungen basierend auf einer ID zu treffen, die der Provider definiert (d. H. EntitätsID), wenn wir leicht irgendein Risiko wegnehmen können, indem wir die Entscheidung von einer ID ableiten, die wir definieren (d. H. Alias). –