This generates
JAVA_OPTS: "-Dprogram.name=standalone.bat -Xms64M -Xmx512M -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"
===============================================================================
Listening for transport dt_socket at address: 8787
In fact, in standalone.bat you find this code:
rem Set debug settings if not already set if "%DEBUG_MODE%" == "true" ( echo "%JAVA_OPTS%" | findstr /I "\-agentlib:jdwp" > nul if errorlevel == 1 ( set "JAVA_OPTS=%JAVA_OPTS% -agentlib:jdwp=transport=dt_socket,address=%DEBUG_PORT_VAR%,server=y,suspend=n" ) else ( echo Debug already enabled in JAVA_OPTS, ignoring --debug argument ) )
You can now follow these instructions https://www.eclipse.org/jetty/documentation/9.4.x/debugging-with-eclipse.html to configure Eclipse,
or simply
right-click on project in eclipse, Debug as, Remote Java Application, then you get this dialog
so I can trace this code:
public String getPrincipalName(HttpServletRequest request) {
KeycloakPrincipal keycloakPrincipal = (KeycloakPrincipal)request.getUserPrincipal();
return keycloakPrincipal != null ? keycloakPrincipal.getKeycloakSecurityContext().toString() : "unauthenticated" ;
}
and discover this:
In a ManagedBean you can inject a Principal, and Wildfly will take care of it transparently:
@Named
@RequestScoped
public class EventViewBean {
@Inject Principal principal;
public void getPrincipal() {
System.out.println("principal class name is " + principal.getClass().gtName());
}
}
This will print a:
org.jboss.weld.security.Principal$$Proxy$_$$_Weld$Proxy$
and not - as expected - a http://www.keycloak.org/docs-api/3.2/javadocs/org/keycloak/KeycloakPrincipal.html who however also implements the https://docs.oracle.com/javase/7/docs/api/java/security/Principal.html interface
No comments:
Post a Comment