Holen Angemeldet Benutzername in einer webapp sicherte sich mit Keycloak
Habe ich gesichert eine enterprise-Anwendung mit Keycloak mit standard-wildfly basiert Keycloak Adapter. Problem, das ich bin vor ist, dass die rest-web-services, wenn Sie angerufen werden, wissen muss, um den Benutzernamen, der derzeit angemeldet ist. Wie bekomme ich die angemeldeten Benutzer Informationen aus Keycloak?
Versuchte ich mit SecurityContext
, WebListener
etc. Aber keiner von Ihnen sind in der Lage, geben Sie mir die erforderlichen Angaben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erhalten Sie alle Benutzer-Informationen aus dem security-context.
Beispiel:
Für den security-Kontext weitergegeben werden, Sie haben eine Sicherheits-Domäne konfiguriert, wie beschrieben, in der:
JBoss/Wildfly-Adapter-Konfiguration
getToken()
stattgetIdToken()
Haben Sie auch die
principal-attribute
Eigenschaft in derkeycloak.json
- Datei von Ihrem web-app zupreferred_username
.SessionContext.getCallerPrincipal.getName
an die EJB-Schicht wird das gesamte Projekt war verpackt wie ein OHR.Hinzufügen müssen standalone.xml nächste Zeile:
Beispiel:
In Keycloak 3.4.3 (kann auch auf früheren Versionen) konnte ich die Karte Benutzernamen, um die
sub
token Anspruch name. Aus der Keycloak admin-interface dies geschieht unterClients > [your-client] > Mappers > username
und geben Sie dannsub
imToken Claim Name
Feld. Dies hat den Vorteil, tatsächlich ändern sich die Inhalte derID token
zurückgegeben Keycloak eher als Anpassung der client-Seite, wie in der andere Antwort. Dies ist besonders schön, wenn man mit einem standard OpenID Connect-Bibliothek, anstatt einen adapter zur Verfügung gestellt von Keycloak.In meinem Fall war ich unter den bevorzugten Benutzer Namen von der token wie diese
Arbeiten, ich hatte zu gehen, um keycloak und auf meinem client eine Vorlage für das hinzufügen gelieferten, wenn nicht Hinzugefügt bevorzugten Benutzernamen kam null.
Überprüfen Sie den Benutzernamen auf dem gebaut ins, Kunden-template -> Mapper.
Nach, dass, wenn gearbeitet!