@Override public boolean isExpired() { return this.at.isExpired(); }
@Override public AccessToken loadAccessTokenByClientCredentials(String clientId, String clientSecret) { String key = clientId+":"+clientSecret; AccessToken token = getAccessToken(key); if(token == null){ token = fetcher.fetchTokenByClientCredentials(clientId,clientSecret); saveAccessToken(key,token); } if(token.isExpired()){ token = refreshAccessToken(token); saveAccessToken(key,token); } return token; }
@Override public AccessToken loadAccessTokenByPassword(String clientId, String clientSecret, String username, String password) { String key = username+":"+password+":"+clientId+":"+clientSecret; AccessToken token = getAccessToken(key); if(token == null){ token = fetcher.fetchTokenByPassword(clientId,clientSecret,username,password); saveAccessToken(key,token); } if(token.isExpired()){ token = refreshAccessToken(token); saveAccessToken(key,token); } return token; }
@Override public State handleAuthenticationResolved(Request request, Response response, AuthenticationContext context) throws Throwable { Authentication authc = context.getAuthentication(); if(null != authc) { AccessToken at; if(authc instanceof OAuth2LoginAuthentication) { at = ((OAuth2LoginAuthentication) authc).getAccessToken(); if(null != at) { accessTokenStore.saveAccessToken(request, context, at); } }else{ at = accessTokenStore.loadAccessToken(request, context); } if(null != at) { if(at.isExpired()) { log.info("AT '{}' expired, refresh it", at.getToken()); at = accessTokenStore.refreshAndSaveAccessToken(request, context, at); } TokenContext.setAccessToken(request, at); } } return State.CONTINUE; }