<html><head></head><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:13px"><div id="yui_3_16_0_1_1444922310511_7332">Hi Guys!!</div><div id="yui_3_16_0_1_1444922310511_7333"><br></div><div id="yui_3_16_0_1_1444922310511_7331">I took latest master to verify the fix that Stian delivered to prevent usage of same refresh token.</div><div id="yui_3_16_0_1_1444922310511_7330">My test code tries getting the access token + Refresh token through direct access grant but fails due to NullPointer exception.</div><div id="yui_3_16_0_1_1444922310511_7522">Meanwhile I can continue to debug further, but wanted to share the observation to you guys... Will post further if I get any more details...<br></div><div id="yui_3_16_0_1_1444922310511_7342"><br></div><div id="yui_3_16_0_1_1444922310511_7415">Environment details - I have user federation configured to LDAP and tried to login with a user in ldap.<br></div><div id="yui_3_16_0_1_1444922310511_7416"><br></div><div id="yui_3_16_0_1_1444922310511_7395"><br></div><div id="yui_3_16_0_1_1444922310511_7396" dir="ltr">Caused by: java.lang.NullPointerException<br class="" id="yui_3_16_0_1_1444922310511_7344">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.keycloak.models.cache.infinispan.DefaultCacheUserProvider.removeUser(DefaultCacheUserProvider.java:272)<br class="" id="yui_3_16_0_1_1444922310511_7346">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.keycloak.models.UserFederationManager.deleteInvalidUser(UserFederationManager.java:113)<br class="" id="yui_3_16_0_1_1444922310511_7348">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.keycloak.models.UserFederationManager.validateAndProxyUser(UserFederationManager.java:135)<br class="" id="yui_3_16_0_1_1444922310511_7350">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.keycloak.models.UserFederationManager.getUserById(UserFederationManager.java:163)<br class="" id="yui_3_16_0_1_1444922310511_7352">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.keycloak.models.sessions.infinispan.ClientSessionAdapter.getAuthenticatedUser(ClientSessionAdapter.java:265)<br class="" id="yui_3_16_0_1_1444922310511_7354">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:116)<br class="" id="yui_3_16_0_1_1444922310511_7356">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.keycloak.authentication.AuthenticationProcessor.authenticateOnly(AuthenticationProcessor.java:724)<br class="" id="yui_3_16_0_1_1444922310511_7358">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.keycloak.protocol.oidc.endpoints.TokenEndpoint.buildResourceOwnerPasswordCredentialsGrant(TokenEndpoint.java:357)<br class="" id="yui_3_16_0_1_1444922310511_7360">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.keycloak.protocol.oidc.endpoints.TokenEndpoint.build(TokenEndpoint.java:110)<br class="" id="yui_3_16_0_1_1444922310511_7362">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br class="" id="yui_3_16_0_1_1444922310511_7364">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br class="" id="yui_3_16_0_1_1444922310511_7366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br class="" id="yui_3_16_0_1_1444922310511_7368">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.lang.reflect.Method.invoke(Method.java:606)<br class="" id="yui_3_16_0_1_1444922310511_7370">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137)<br class="" id="yui_3_16_0_1_1444922310511_7372">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296)<br class="" id="yui_3_16_0_1_1444922310511_7374">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250)<br class="" id="yui_3_16_0_1_1444922310511_7376">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:140)<br class="" id="yui_3_16_0_1_1444922310511_7378">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:109)<br class="" id="yui_3_16_0_1_1444922310511_7380">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:135)<br class="" id="yui_3_16_0_1_1444922310511_7382">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:103)<br class="" id="yui_3_16_0_1_1444922310511_7384">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)<br></div><div id="yui_3_16_0_1_1444922310511_7145"><br></div></div></body></html>