private void cacheUserInfo(CachableUserInfo user) { if (user == null || cache == null) { return; } try { cache.storeToken(user.getTenantId(), user, user.tokenTtl().intValue()); } catch (IOException ex) { LOG.warn( "Unable to cache user token information: " + user.getUserId() + " Reason: " + ex.getMessage(), ex); } }
@Override public FilterDirector authenticate(HttpServletRequest request) { final FilterDirector filterDirector = new FilterDirectorImpl(); filterDirector.setResponseStatus(HttpStatusCode.UNAUTHORIZED); filterDirector.setFilterAction(FilterAction.RETURN); final String authToken = request.getHeader(CommonHttpHeader.AUTH_TOKEN.toString()); final ExtractorResult<Object> account = keyedRegexExtractor.extract(request.getRequestURI()); CachableUserInfo user = null; if ((!StringUtilities.isBlank(authToken) && account != null)) { user = checkUserCache(account.getResult(), authToken); if (user == null) { try { user = authenticationService.validateToken(account.getResult(), authToken); cacheUserInfo(user); } catch (Exception ex) { LOG.error("Failure in auth: " + ex.getMessage(), ex); filterDirector.setResponseStatus(HttpStatusCode.INTERNAL_SERVER_ERROR); } } } Groups groups = null; if (user != null) { groups = authenticationService.getGroups(user.getUserId()); } final AuthenticationHeaderManager headerManager = new AuthenticationHeaderManager( authToken, user, delegatable, filterDirector, account == null ? "" : account.getResult(), groups, request); headerManager.setFilterDirectorValues(); return filterDirector; }