diff --git a/orcid-core/src/main/java/org/orcid/core/oauth/service/OrcidOauth2TokenDetailServiceImpl.java b/orcid-core/src/main/java/org/orcid/core/oauth/service/OrcidOauth2TokenDetailServiceImpl.java index 88d4a44fe07..d4e48b8bc0d 100644 --- a/orcid-core/src/main/java/org/orcid/core/oauth/service/OrcidOauth2TokenDetailServiceImpl.java +++ b/orcid-core/src/main/java/org/orcid/core/oauth/service/OrcidOauth2TokenDetailServiceImpl.java @@ -246,6 +246,16 @@ public void disableAccessTokenByUserOrcid(String userOrcid, RevokeReason reason) @Override @Transactional public void disableClientAccess(String clientDetailsId, String userOrcid) { + // As a security measure, remove any user tokens from the cache + List userTokens = findByUserName(userOrcid); + if(userTokens != null && !userTokens.isEmpty()) { + for(OrcidOauth2TokenDetail token : userTokens) { + if(clientDetailsId.equals(token.getClientDetailsId())) { + redisClient.remove(token.getTokenValue()); + } + } + } + // And then disable all user tokens orcidOauth2TokenDetailDao.disableClientAccessTokensByUserOrcid(userOrcid, clientDetailsId); }