mitreid-connect
公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository クラス
org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository の継承関係図
Inheritance graph
org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository 連携図
Collaboration graph

公開メンバ関数

Set< OAuth2AccessTokenEntitygetAllAccessTokens ()
 
Set< OAuth2RefreshTokenEntitygetAllRefreshTokens ()
 
OAuth2AccessTokenEntity getAccessTokenByValue (String accessTokenValue)
 
OAuth2AccessTokenEntity getAccessTokenById (Long id)
 
OAuth2AccessTokenEntity saveAccessToken (OAuth2AccessTokenEntity token)
 
void removeAccessToken (OAuth2AccessTokenEntity accessToken)
 
void clearAccessTokensForRefreshToken (OAuth2RefreshTokenEntity refreshToken)
 
OAuth2RefreshTokenEntity getRefreshTokenByValue (String refreshTokenValue)
 
OAuth2RefreshTokenEntity getRefreshTokenById (Long id)
 
OAuth2RefreshTokenEntity saveRefreshToken (OAuth2RefreshTokenEntity refreshToken)
 
void removeRefreshToken (OAuth2RefreshTokenEntity refreshToken)
 
void clearTokensForClient (ClientDetailsEntity client)
 
List< OAuth2AccessTokenEntitygetAccessTokensForClient (ClientDetailsEntity client)
 
List< OAuth2RefreshTokenEntitygetRefreshTokensForClient (ClientDetailsEntity client)
 
Set< OAuth2AccessTokenEntitygetAllExpiredAccessTokens ()
 
Set< OAuth2AccessTokenEntitygetAllExpiredAccessTokens (PageCriteria pageCriteria)
 
Set< OAuth2RefreshTokenEntitygetAllExpiredRefreshTokens ()
 
Set< OAuth2RefreshTokenEntitygetAllExpiredRefreshTokens (PageCriteria pageCriteria)
 
Set< OAuth2AccessTokenEntitygetAccessTokensForResourceSet (ResourceSet rs)
 
void clearDuplicateAccessTokens ()
 
void clearDuplicateRefreshTokens ()
 
List< OAuth2AccessTokenEntitygetAccessTokensForApprovedSite (ApprovedSite approvedSite)
 

非公開変数類

EntityManager manager
 

静的非公開変数類

static final int MAXEXPIREDRESULTS = 1000
 
static final Logger logger = LoggerFactory.getLogger(JpaOAuth2TokenRepository.class)
 

詳解

関数詳解

◆ clearAccessTokensForRefreshToken()

void org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.clearAccessTokensForRefreshToken ( OAuth2RefreshTokenEntity  refreshToken)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

111  {
112  TypedQuery<OAuth2AccessTokenEntity> query = manager.createNamedQuery(OAuth2AccessTokenEntity.QUERY_BY_REFRESH_TOKEN, OAuth2AccessTokenEntity.class);
113  query.setParameter(OAuth2AccessTokenEntity.PARAM_REFERSH_TOKEN, refreshToken);
114  List<OAuth2AccessTokenEntity> accessTokens = query.getResultList();
115  for (OAuth2AccessTokenEntity accessToken : accessTokens) {
116  removeAccessToken(accessToken);
117  }
118  }
void removeAccessToken(OAuth2AccessTokenEntity accessToken)
Definition: JpaOAuth2TokenRepository.java:100
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ clearDuplicateAccessTokens()

void org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.clearDuplicateAccessTokens ( )
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

236  {
237 
238  Query query = manager.createQuery("select a.jwt, count(1) as c from OAuth2AccessTokenEntity a GROUP BY a.jwt HAVING count(1) > 1");
239  @SuppressWarnings("unchecked")
240  List<Object[]> resultList = query.getResultList();
241  List<JWT> values = new ArrayList<>();
242  for (Object[] r : resultList) {
243  logger.warn("Found duplicate access tokens: {}, {}", ((JWT)r[0]).serialize(), r[1]);
244  values.add((JWT) r[0]);
245  }
246  if (values.size() > 0) {
247  CriteriaBuilder cb = manager.getCriteriaBuilder();
248  CriteriaDelete<OAuth2AccessTokenEntity> criteriaDelete = cb.createCriteriaDelete(OAuth2AccessTokenEntity.class);
249  Root<OAuth2AccessTokenEntity> root = criteriaDelete.from(OAuth2AccessTokenEntity.class);
250  criteriaDelete.where(root.get("jwt").in(values));
251  int result = manager.createQuery(criteriaDelete).executeUpdate();
252  logger.warn("Deleted {} duplicate access tokens", result);
253  }
254  }
static final Logger logger
Definition: JpaOAuth2TokenRepository.java:57
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ clearDuplicateRefreshTokens()

void org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.clearDuplicateRefreshTokens ( )
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

261  {
262  Query query = manager.createQuery("select a.jwt, count(1) as c from OAuth2RefreshTokenEntity a GROUP BY a.jwt HAVING count(1) > 1");
263  @SuppressWarnings("unchecked")
264  List<Object[]> resultList = query.getResultList();
265  List<JWT> values = new ArrayList<>();
266  for (Object[] r : resultList) {
267  logger.warn("Found duplicate refresh tokens: {}, {}", ((JWT)r[0]).serialize(), r[1]);
268  values.add((JWT) r[0]);
269  }
270  if (values.size() > 0) {
271  CriteriaBuilder cb = manager.getCriteriaBuilder();
272  CriteriaDelete<OAuth2RefreshTokenEntity> criteriaDelete = cb.createCriteriaDelete(OAuth2RefreshTokenEntity.class);
273  Root<OAuth2RefreshTokenEntity> root = criteriaDelete.from(OAuth2RefreshTokenEntity.class);
274  criteriaDelete.where(root.get("jwt").in(values));
275  int result = manager.createQuery(criteriaDelete).executeUpdate();
276  logger.warn("Deleted {} duplicate refresh tokens", result);
277  }
278 
279  }
static final Logger logger
Definition: JpaOAuth2TokenRepository.java:57
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ clearTokensForClient()

void org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.clearTokensForClient ( ClientDetailsEntity  client)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

156  {
157  TypedQuery<OAuth2AccessTokenEntity> queryA = manager.createNamedQuery(OAuth2AccessTokenEntity.QUERY_BY_CLIENT, OAuth2AccessTokenEntity.class);
158  queryA.setParameter(OAuth2AccessTokenEntity.PARAM_CLIENT, client);
159  List<OAuth2AccessTokenEntity> accessTokens = queryA.getResultList();
160  for (OAuth2AccessTokenEntity accessToken : accessTokens) {
161  removeAccessToken(accessToken);
162  }
163  TypedQuery<OAuth2RefreshTokenEntity> queryR = manager.createNamedQuery(OAuth2RefreshTokenEntity.QUERY_BY_CLIENT, OAuth2RefreshTokenEntity.class);
164  queryR.setParameter(OAuth2RefreshTokenEntity.PARAM_CLIENT, client);
165  List<OAuth2RefreshTokenEntity> refreshTokens = queryR.getResultList();
166  for (OAuth2RefreshTokenEntity refreshToken : refreshTokens) {
167  removeRefreshToken(refreshToken);
168  }
169  }
void removeAccessToken(OAuth2AccessTokenEntity accessToken)
Definition: JpaOAuth2TokenRepository.java:100
void removeRefreshToken(OAuth2RefreshTokenEntity refreshToken)
Definition: JpaOAuth2TokenRepository.java:145
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ getAccessTokenById()

OAuth2AccessTokenEntity org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getAccessTokenById ( Long  id)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

88  {
89  return manager.find(OAuth2AccessTokenEntity.class, id);
90  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ getAccessTokenByValue()

OAuth2AccessTokenEntity org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getAccessTokenByValue ( String  accessTokenValue)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

76  {
77  try {
78  JWT jwt = JWTParser.parse(accessTokenValue);
79  TypedQuery<OAuth2AccessTokenEntity> query = manager.createNamedQuery(OAuth2AccessTokenEntity.QUERY_BY_TOKEN_VALUE, OAuth2AccessTokenEntity.class);
80  query.setParameter(OAuth2AccessTokenEntity.PARAM_TOKEN_VALUE, jwt);
81  return JpaUtil.getSingleResult(query.getResultList());
82  } catch (ParseException e) {
83  return null;
84  }
85  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ getAccessTokensForApprovedSite()

List<OAuth2AccessTokenEntity> org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getAccessTokensForApprovedSite ( ApprovedSite  approvedSite)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

282  {
283  TypedQuery<OAuth2AccessTokenEntity> queryA = manager.createNamedQuery(OAuth2AccessTokenEntity.QUERY_BY_APPROVED_SITE, OAuth2AccessTokenEntity.class);
284  queryA.setParameter(OAuth2AccessTokenEntity.PARAM_APPROVED_SITE, approvedSite);
285  List<OAuth2AccessTokenEntity> accessTokens = queryA.getResultList();
286  return accessTokens;
287  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ getAccessTokensForClient()

List<OAuth2AccessTokenEntity> org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getAccessTokensForClient ( ClientDetailsEntity  client)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

175  {
176  TypedQuery<OAuth2AccessTokenEntity> queryA = manager.createNamedQuery(OAuth2AccessTokenEntity.QUERY_BY_CLIENT, OAuth2AccessTokenEntity.class);
177  queryA.setParameter(OAuth2AccessTokenEntity.PARAM_CLIENT, client);
178  List<OAuth2AccessTokenEntity> accessTokens = queryA.getResultList();
179  return accessTokens;
180  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ getAccessTokensForResourceSet()

Set<OAuth2AccessTokenEntity> org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getAccessTokensForResourceSet ( ResourceSet  rs)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

225  {
226  TypedQuery<OAuth2AccessTokenEntity> query = manager.createNamedQuery(OAuth2AccessTokenEntity.QUERY_BY_RESOURCE_SET, OAuth2AccessTokenEntity.class);
227  query.setParameter(OAuth2AccessTokenEntity.PARAM_RESOURCE_SET_ID, rs.getId());
228  return new LinkedHashSet<>(query.getResultList());
229  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ getAllAccessTokens()

Set<OAuth2AccessTokenEntity> org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getAllAccessTokens ( )
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

63  {
64  TypedQuery<OAuth2AccessTokenEntity> query = manager.createNamedQuery(OAuth2AccessTokenEntity.QUERY_ALL, OAuth2AccessTokenEntity.class);
65  return new LinkedHashSet<>(query.getResultList());
66  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ getAllExpiredAccessTokens() [1/2]

Set<OAuth2AccessTokenEntity> org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getAllExpiredAccessTokens ( )
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

194  {
195  DefaultPageCriteria pageCriteria = new DefaultPageCriteria(0, MAXEXPIREDRESULTS);
196  return getAllExpiredAccessTokens(pageCriteria);
197  }
Set< OAuth2AccessTokenEntity > getAllExpiredAccessTokens()
Definition: JpaOAuth2TokenRepository.java:194
static final int MAXEXPIREDRESULTS
Definition: JpaOAuth2TokenRepository.java:55

◆ getAllExpiredAccessTokens() [2/2]

Set<OAuth2AccessTokenEntity> org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getAllExpiredAccessTokens ( PageCriteria  pageCriteria)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

200  {
201  TypedQuery<OAuth2AccessTokenEntity> query = manager.createNamedQuery(OAuth2AccessTokenEntity.QUERY_EXPIRED_BY_DATE, OAuth2AccessTokenEntity.class);
202  query.setParameter(OAuth2AccessTokenEntity.PARAM_DATE, new Date());
203  return new LinkedHashSet<>(JpaUtil.getResultPage(query, pageCriteria));
204  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ getAllExpiredRefreshTokens() [1/2]

Set<OAuth2RefreshTokenEntity> org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getAllExpiredRefreshTokens ( )
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

207  {
208  DefaultPageCriteria pageCriteria = new DefaultPageCriteria(0, MAXEXPIREDRESULTS);
209  return getAllExpiredRefreshTokens(pageCriteria);
210  }
Set< OAuth2RefreshTokenEntity > getAllExpiredRefreshTokens()
Definition: JpaOAuth2TokenRepository.java:207
static final int MAXEXPIREDRESULTS
Definition: JpaOAuth2TokenRepository.java:55

◆ getAllExpiredRefreshTokens() [2/2]

Set<OAuth2RefreshTokenEntity> org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getAllExpiredRefreshTokens ( PageCriteria  pageCriteria)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

213  {
214  TypedQuery<OAuth2RefreshTokenEntity> query = manager.createNamedQuery(OAuth2RefreshTokenEntity.QUERY_EXPIRED_BY_DATE, OAuth2RefreshTokenEntity.class);
215  query.setParameter(OAuth2AccessTokenEntity.PARAM_DATE, new Date());
216  return new LinkedHashSet<>(JpaUtil.getResultPage(query,pageCriteria));
217  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ getAllRefreshTokens()

Set<OAuth2RefreshTokenEntity> org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getAllRefreshTokens ( )
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

69  {
70  TypedQuery<OAuth2RefreshTokenEntity> query = manager.createNamedQuery(OAuth2RefreshTokenEntity.QUERY_ALL, OAuth2RefreshTokenEntity.class);
71  return new LinkedHashSet<>(query.getResultList());
72  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ getRefreshTokenById()

OAuth2RefreshTokenEntity org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getRefreshTokenById ( Long  id)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

133  {
134  return manager.find(OAuth2RefreshTokenEntity.class, id);
135  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ getRefreshTokenByValue()

OAuth2RefreshTokenEntity org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getRefreshTokenByValue ( String  refreshTokenValue)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

121  {
122  try {
123  JWT jwt = JWTParser.parse(refreshTokenValue);
124  TypedQuery<OAuth2RefreshTokenEntity> query = manager.createNamedQuery(OAuth2RefreshTokenEntity.QUERY_BY_TOKEN_VALUE, OAuth2RefreshTokenEntity.class);
125  query.setParameter(OAuth2RefreshTokenEntity.PARAM_TOKEN_VALUE, jwt);
126  return JpaUtil.getSingleResult(query.getResultList());
127  } catch (ParseException e) {
128  return null;
129  }
130  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ getRefreshTokensForClient()

List<OAuth2RefreshTokenEntity> org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.getRefreshTokensForClient ( ClientDetailsEntity  client)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

186  {
187  TypedQuery<OAuth2RefreshTokenEntity> queryR = manager.createNamedQuery(OAuth2RefreshTokenEntity.QUERY_BY_CLIENT, OAuth2RefreshTokenEntity.class);
188  queryR.setParameter(OAuth2RefreshTokenEntity.PARAM_CLIENT, client);
189  List<OAuth2RefreshTokenEntity> refreshTokens = queryR.getResultList();
190  return refreshTokens;
191  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ removeAccessToken()

void org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.removeAccessToken ( OAuth2AccessTokenEntity  accessToken)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

100  {
101  OAuth2AccessTokenEntity found = getAccessTokenById(accessToken.getId());
102  if (found != null) {
103  manager.remove(found);
104  } else {
105  throw new IllegalArgumentException("Access token not found: " + accessToken);
106  }
107  }
OAuth2AccessTokenEntity getAccessTokenById(Long id)
Definition: JpaOAuth2TokenRepository.java:88
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ removeRefreshToken()

void org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.removeRefreshToken ( OAuth2RefreshTokenEntity  refreshToken)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

145  {
146  OAuth2RefreshTokenEntity found = getRefreshTokenById(refreshToken.getId());
147  if (found != null) {
148  manager.remove(found);
149  } else {
150  throw new IllegalArgumentException("Refresh token not found: " + refreshToken);
151  }
152  }
OAuth2RefreshTokenEntity getRefreshTokenById(Long id)
Definition: JpaOAuth2TokenRepository.java:133
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ saveAccessToken()

OAuth2AccessTokenEntity org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.saveAccessToken ( OAuth2AccessTokenEntity  token)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

94  {
95  return JpaUtil.saveOrUpdate(token.getId(), manager, token);
96  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

◆ saveRefreshToken()

OAuth2RefreshTokenEntity org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.saveRefreshToken ( OAuth2RefreshTokenEntity  refreshToken)
inline

org.mitre.oauth2.repository.OAuth2TokenRepositoryを実装しています。

139  {
140  return JpaUtil.saveOrUpdate(refreshToken.getId(), manager, refreshToken);
141  }
EntityManager manager
Definition: JpaOAuth2TokenRepository.java:60

メンバ詳解

◆ logger

final Logger org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.logger = LoggerFactory.getLogger(JpaOAuth2TokenRepository.class)
staticprivate

◆ manager

EntityManager org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.manager
private

◆ MAXEXPIREDRESULTS

final int org.mitre.oauth2.repository.impl.JpaOAuth2TokenRepository.MAXEXPIREDRESULTS = 1000
staticprivate

このクラス詳解は次のファイルから抽出されました: