Ich versuche, mich mit dem Konzept der bearer-only
Kunden in Keycloak zu beschäftigen.
Ich verstehe das Konzept von öffentlich gegen vertraulich und das Konzept von Dienstkonten und so grant_type=client_credentials
. Aber mit bearer-only
stecke ich fest.
Googeln enthüllt nur Fragmente von Diskussionen, die sagen:
Sie können mit einem
bearer-only
Client kein Token von keycloak erhalten .
Die Dokumente sind ebenfalls unklar. Sie sagen nur:
Nur-Träger-Zugriffstyp bedeutet, dass die Anwendung nur Träger-Token-Anforderungen zulässt.
Ok, wenn meine App nur Inhaber-Token-Anfragen zulässt, wie erhalte ich dieses Token, wenn ich es nicht mit der Client-ID / dem Client-Geheimnis von Keycloak erhalten kann?
Und wenn Sie keinen Token erhalten können, was können Sie überhaupt? Warum gibt es diese Kunden? Kann jemand bitte ein Beispiel für die Verwendung dieser Art von Client geben?
ServiceA
gültig ist. Recht? Aber wenn dies der Fall ist, warum überhaupt Keycloak anrufen? Wenn mein Client über einen öffentlichen Keycloak-Schlüssel verfügt, kann er diesen mit diesem Schlüssel überprüfen, ohne jemals Keycloak aufrufen zu müssen.bearer-only
wirklich nur vorhanden, um diesen Anwendungsfall zu unterstützen, der noch nicht fertig ist?Bedeutung des Zugriffstyps nur für Inhaber
Wenn Sie also Ihren Client als auswählen
bearer-only
, versucht der Keycloak-Adapter in diesem Fall nicht, Benutzer zu authentifizieren, sondern überprüft nur die Inhaber-Token. Aus diesem Grund erlaubt die Keycloak-Dokumentation, in der auch diebearer-only
Anwendung erwähnt wird, die Anmeldung über den Browser nicht.Und wenn Sie keinen Token erhalten können, was können Sie überhaupt? Warum gibt es diese Kunden?
Wenn Sie also die obige Aussage verstehen, werden Anrufer
confidential
und Angerufene sein, wenn Sie zwei Mikrodienste haben, die in dem Fall miteinander sprechenbearer-only
Und Keycloak auch erwähnt
Wenn Sie also einen Adapter verwenden möchten, den Sie je
bearer-only
nach Bedarf verwenden könnenquelle
bearer-only
ansonsten machen Ihren Clientconfidential
Kurze Antwort: Sie können kein Zugriffstoken mit einem Nur-Inhaber-Client erhalten, aber Sie können ein Zugriffstoken erhalten, das ein Nur-Inhaber-Client mit einem anderen Client akzeptieren kann.
Weitere Details Nur-Inhaber-Clients stellen Back-End-Anwendungen wie Webdienste dar, die von der Frontanwendung aufgerufen und vom Autorisierungsserver (= Schlüsselumhang) gesichert werden.
Backend- / Webdienstanwendungen werden nicht direkt vom Benutzer aufgerufen, sodass sie nicht im interaktiven Oauth2.0-Benutzerfluss abgespielt werden können. Wenn Sie "Nur Inhaber" festlegen, wird diese Tatsache auf dem Keycloak-Server dokumentiert, sodass der Administrator den Client ohne ansonsten obligatorische Werte konfigurieren kann (z. B. uri umleiten…) und nützliche Fehlermeldungen zulassen können, wenn jemand versucht, ein Token für einen solchen Client zu erhalten
Dies bedeutet jedoch nicht, dass Sie keine bestimmten Rollen für diesen Client konfigurieren können. Daher muss er im Schlüsselumhüllungsbereich angezeigt werden.
Darüber hinaus muss der Nur-Inhaber-Client das empfangene Zugriffstoken überprüfen. Insbesondere wenn diese (empfohlene) Adapterfunktion "Token-Zielgruppe überprüfen" aktiviert ist, muss der Nur-Inhaber-Client überprüfen, ob das Zugriffstoken für dieses Token ausgestellt wurde: Der Client nur für Inhaber muss sich im Zielgruppenattribut des Zugriffstokens befinden: siehe https://www.keycloak.org/docs/latest/server_admin/index.html#_audience
Für die Zielgruppenverwaltung über Keycloak müssen Nur-Inhaber-Clients im Keycloak-Bereich registriert sein.
quelle