<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Hi everyone,</div><div class=""><br class=""></div><div class="">I encountered some problems when trying to use the Servlet 3.0 login method in Wildfly 10. &nbsp;After logging in using `HttpServletRequest.login(String, String)`, using the code below, on successive requests I still get a Basic Authentication prompt.</div><div class=""><br class=""></div><div class="">I have also found the same issue on the JBoss developer forum in a post that goes back to september 2015:&nbsp;<a href="http://developer.jboss.org/thread/262640?start=0&amp;tstart=0" class="">developer.jboss.org/thread/262640?start=0&amp;tstart=0</a>&nbsp;.&nbsp;</div><div class=""><br class=""></div><div class="">Why is the `login` function not working in my configuration?</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">My endpoint:</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; @POST</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; @Path("login")</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; @Consumes(MediaType.APPLICATION_JSON)</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; public void login(@Valid LoginRequest loginRequest) {</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; try {</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; User user = userController.findUserByUsername(loginRequest.getUsername()).orElseThrow(NotFoundException::new);</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; httpServletRequest.login(loginRequest.getUsername(), loginRequest.getPassword());</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; log.info(securityContext); // not null now!</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; catch (ServletException e) {</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throw new NotAuthorizedException(e.getMessage(), e, AuthenticationHeaderFilter.CHALLENGE);</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; }</font></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">And my `jboss-web.xml`</div><div class=""><br class=""></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &lt;?xml version="1.0" encoding="UTF-8"?&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &lt;jboss-web xmlns="<a href="http://www.jboss.com/xml/ns/javaee" class="">http://www.jboss.com/xml/ns/javaee</a>"</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance" class="">http://www.w3.org/2001/XMLSchema-instance</a>"</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xsi:schemaLocation="</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.jboss.com/xml/ns/javaee" class="">http://www.jboss.com/xml/ns/javaee</a></font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd" class="">http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd</a>"&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;security-domain&gt;MyRealm&lt;/security-domain&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &lt;/jboss-web&gt;</font></div><div class=""><br class=""></div><div class="">And my `web.xml`:</div><div class=""><br class=""></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &lt;login-config&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;auth-method&gt;BASIC&lt;/auth-method&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;realm-name&gt;MyRealm&lt;/realm-name&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &lt;/login-config&gt;</font></div><div class=""><font face="Courier New" class=""><br class=""></font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &lt;security-role&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;role-name&gt;admin&lt;/role-name&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &lt;/security-role&gt;</font></div><div class=""><font face="Courier New" class=""><br class=""></font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &lt;security-role&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;role-name&gt;user&lt;/role-name&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &lt;/security-role&gt;</font></div><div class=""><font face="Courier New" class=""><br class=""></font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &lt;security-constraint&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;display-name&gt;Authenticated content&lt;/display-name&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;web-resource-collection&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;web-resource-name&gt;Authentication required&lt;/web-resource-name&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;url-pattern&gt;/api/*&lt;/url-pattern&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/web-resource-collection&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;auth-constraint&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;role-name&gt;user&lt;/role-name&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/auth-constraint&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &lt;/security-constraint&gt;</font></div><div class=""><font face="Courier New" class=""><br class=""></font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &lt;security-constraint&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;display-name&gt;Anonymous content&lt;/display-name&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;web-resource-collection&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;web-resource-name&gt;Exclude from Security&lt;/web-resource-name&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;url-pattern&gt;/api/me/login&lt;/url-pattern&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/web-resource-collection&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &lt;/security-constraint&gt;</font></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Furthermore, I declared my security domain as follows in standalone.xml</div><div class=""><br class=""></div><div class=""><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;security-domain name="MyRealm" cache-type="default"&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;authentication&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;login-module code="Database" flag="required"&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;module-option name="dsJndiName" value="java:jboss/MysqlXADS"/&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;module-option name="principalsQuery" value="SELECT password AS Password FROM user WHERE username = ?"/&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;module-option name="rolesQuery" value="select 'user' as Role, 'Roles' as RoleGroup union select 'admin' as Role, 'Roles' AS RoleGroup from user where admin is true and username = ?"/&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/login-module&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/authentication&gt;</font></div><div class=""><font face="Courier New" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/security-domain&gt;</font></div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">I have also posted the question on Stackoverflow, so any answer posted there will receive the bounty points:&nbsp;<a href="http://stackoverflow.com/questions/38896538/httpservletrequest-login-does-not-keep-logged-in-for-subsequent-requests" class="">http://stackoverflow.com/questions/38896538/httpservletrequest-login-does-not-keep-logged-in-for-subsequent-requests</a></div><div class=""><br class=""></div><div class="">Thanks in advance!</div><div class=""><br class=""></div><div class="">Jan-Willem Gmelig Meyling</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div></body></html>