These two seem to be doing the same things. Can anyone explain the main difference between the two? When would you use one vs the other?
HttpServletRequest.getRemoteUser()
HttpServletRequest.getUserPrincipal().getName()
getRemoteUser. public java.lang.String getRemoteUser() Returns the login of the user making this request, if the user has been authenticated, or null if the user has not been authenticated. Whether the user name is sent with each subsequent request depends on the browser and type of authentication.
getUserPrincipal() Returns a java. security. Principal object containing the name of the current authenticated user.
get(AuthorizationPolicy. class. getName()); From the policy object now I am able to get the username and password.
The HttpServletRequest provides methods for accessing parameters of a request. The type of the request determines where the parameters come from. In most implementations, a GET request takes the parameters from the query string, while a POST request takes the parameters from the posted arguments.
A Principal
represents someone who could potentially authenticate with your application. The Principal's name depends on the authentication method used:
getRemoteUser()
returns "the login of the user" which, in the case of HTTP Basic authentication, will also be the username; it doesn't map cleanly in the X.509 client certificate case though, since the user doesn't enter a "login" as such - in the example above, we could use the Distinguished Name or simply the CN, "bob".
The Javadocs state that "whether the user name is sent with each subsequent request depends on the browser and type of authentication", suggesting that getRemoteUser()
was originally meant to provide data only for requests in which a username was entered. This, however, would result in it returning null
for the majority of requests when cookie-based auth is in use - not too helpful!
In reality, getRemoteUser()
often just calls getUserPrincipal().getName()
; verified in Tomcat 6 and Jetty 6/7.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With