keycloak
クラス | 公開メンバ関数 | 静的公開変数類 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory クラス
org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory の継承関係図
Inheritance graph
org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory 連携図
Collaboration graph

クラス

class  SessionAndKeyHolder
 

公開メンバ関数

PublicKeyStorageProvider create (KeycloakSession session)
 
void init (Config.Scope config)
 
void postInit (KeycloakSessionFactory factory)
 
void close ()
 
String getId ()
 
default int order ()
 

静的公開変数類

static final String PROVIDER_ID = "infinispan"
 
static final String KEYS_CLEAR_CACHE_EVENTS = "KEYS_CLEAR_CACHE_EVENTS"
 
static final String PUBLIC_KEY_STORAGE_INVALIDATION_EVENT = "PUBLIC_KEY_STORAGE_INVALIDATION_EVENT"
 

非公開メンバ関数

void lazyInit (KeycloakSession session)
 
SessionAndKeyHolder getCacheKeyToInvalidate (ProviderEvent event)
 

非公開変数類

volatile Cache< String, PublicKeysEntrykeysCache
 
final Map< String, FutureTask< PublicKeysEntry > > tasksInProgress = new ConcurrentHashMap<>()
 
int minTimeBetweenRequests
 

静的非公開変数類

static final Logger log = Logger.getLogger(InfinispanPublicKeyStorageProviderFactory.class)
 

詳解

著者
Marek Posolda

関数詳解

◆ close()

void org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.close ( )
inline

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

149  {
150 
151  }

◆ create()

PublicKeyStorageProvider org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.create ( KeycloakSession  session)
inline

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

59  {
60  lazyInit(session);
61  return new InfinispanPublicKeyStorageProvider(session, keysCache, tasksInProgress, minTimeBetweenRequests);
62  }
final Map< String, FutureTask< PublicKeysEntry > > tasksInProgress
Definition: InfinispanPublicKeyStorageProviderFactory.java:54
volatile Cache< String, PublicKeysEntry > keysCache
Definition: InfinispanPublicKeyStorageProviderFactory.java:52
void lazyInit(KeycloakSession session)
Definition: InfinispanPublicKeyStorageProviderFactory.java:64
int minTimeBetweenRequests
Definition: InfinispanPublicKeyStorageProviderFactory.java:56

◆ getCacheKeyToInvalidate()

SessionAndKeyHolder org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.getCacheKeyToInvalidate ( ProviderEvent  event)
inlineprivate
115  {
116  if (event instanceof RealmModel.ClientUpdatedEvent) {
117  RealmModel.ClientUpdatedEvent eventt = (RealmModel.ClientUpdatedEvent) event;
118  String cacheKey = PublicKeyStorageUtils.getClientModelCacheKey(eventt.getUpdatedClient().getRealm().getId(), eventt.getUpdatedClient().getId());
119  return new SessionAndKeyHolder(eventt.getKeycloakSession(), cacheKey);
120  } else if (event instanceof RealmModel.ClientRemovedEvent) {
121  RealmModel.ClientRemovedEvent eventt = (RealmModel.ClientRemovedEvent) event;
122  String cacheKey = PublicKeyStorageUtils.getClientModelCacheKey(eventt.getClient().getRealm().getId(), eventt.getClient().getId());
123  return new SessionAndKeyHolder(eventt.getKeycloakSession(), cacheKey);
124  } else if (event instanceof RealmModel.IdentityProviderUpdatedEvent) {
125  RealmModel.IdentityProviderUpdatedEvent eventt = (RealmModel.IdentityProviderUpdatedEvent) event;
126  String cacheKey = PublicKeyStorageUtils.getIdpModelCacheKey(eventt.getRealm().getId(), eventt.getUpdatedIdentityProvider().getInternalId());
127  return new SessionAndKeyHolder(eventt.getKeycloakSession(), cacheKey);
128  } else if (event instanceof RealmModel.IdentityProviderRemovedEvent) {
129  RealmModel.IdentityProviderRemovedEvent eventt = (RealmModel.IdentityProviderRemovedEvent) event;
130  String cacheKey = PublicKeyStorageUtils.getIdpModelCacheKey(eventt.getRealm().getId(), eventt.getRemovedIdentityProvider().getInternalId());
131  return new SessionAndKeyHolder(eventt.getKeycloakSession(), cacheKey);
132  } else {
133  return null;
134  }
135  }

◆ getId()

String org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.getId ( )
inline

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

154  {
155  return PROVIDER_ID;
156  }
static final String PROVIDER_ID
Definition: InfinispanPublicKeyStorageProviderFactory.java:46

◆ init()

void org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.init ( Config.Scope  config)
inline

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

89  {
90  minTimeBetweenRequests = config.getInt("minTimeBetweenRequests", 10);
91  log.debugf("minTimeBetweenRequests is %d", minTimeBetweenRequests);
92  }
static final Logger log
Definition: InfinispanPublicKeyStorageProviderFactory.java:44
int minTimeBetweenRequests
Definition: InfinispanPublicKeyStorageProviderFactory.java:56

◆ lazyInit()

void org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.lazyInit ( KeycloakSession  session)
inlineprivate
64  {
65  if (keysCache == null) {
66  synchronized (this) {
67  if (keysCache == null) {
68  this.keysCache = session.getProvider(InfinispanConnectionProvider.class).getCache(InfinispanConnectionProvider.KEYS_CACHE_NAME);
69 
70  ClusterProvider cluster = session.getProvider(ClusterProvider.class);
71  cluster.registerListener(PUBLIC_KEY_STORAGE_INVALIDATION_EVENT, (ClusterEvent event) -> {
72 
73  PublicKeyStorageInvalidationEvent invalidationEvent = (PublicKeyStorageInvalidationEvent) event;
74  keysCache.remove(invalidationEvent.getCacheKey());
75 
76  });
77 
78  cluster.registerListener(KEYS_CLEAR_CACHE_EVENTS, (ClusterEvent event) -> {
79 
80  keysCache.clear();
81 
82  });
83  }
84  }
85  }
86  }
static final String KEYS_CLEAR_CACHE_EVENTS
Definition: InfinispanPublicKeyStorageProviderFactory.java:48
volatile Cache< String, PublicKeysEntry > keysCache
Definition: InfinispanPublicKeyStorageProviderFactory.java:52
static final String PUBLIC_KEY_STORAGE_INVALIDATION_EVENT
Definition: InfinispanPublicKeyStorageProviderFactory.java:50

◆ order()

default int org.keycloak.provider.ProviderFactory< T extends Provider >.order ( )
inlineinherited

◆ postInit()

void org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.postInit ( KeycloakSessionFactory  factory)
inline

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

95  {
96  factory.register(new ProviderEventListener() {
97 
98  @Override
99  public void onEvent(ProviderEvent event) {
100  if (keysCache == null) {
101  return;
102  }
103 
104  SessionAndKeyHolder cacheKey = getCacheKeyToInvalidate(event);
105  if (cacheKey != null) {
106  log.debugf("Invalidating %s from keysCache", cacheKey);
107  InfinispanPublicKeyStorageProvider provider = (InfinispanPublicKeyStorageProvider) cacheKey.session.getProvider(PublicKeyStorageProvider.class, getId());
108  provider.addInvalidation(cacheKey.cacheKey);
109  }
110  }
111 
112  });
113  }
static final Logger log
Definition: InfinispanPublicKeyStorageProviderFactory.java:44
SessionAndKeyHolder getCacheKeyToInvalidate(ProviderEvent event)
Definition: InfinispanPublicKeyStorageProviderFactory.java:115
String getId()
Definition: InfinispanPublicKeyStorageProviderFactory.java:154
volatile Cache< String, PublicKeysEntry > keysCache
Definition: InfinispanPublicKeyStorageProviderFactory.java:52

メンバ詳解

◆ KEYS_CLEAR_CACHE_EVENTS

final String org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.KEYS_CLEAR_CACHE_EVENTS = "KEYS_CLEAR_CACHE_EVENTS"
static

◆ keysCache

volatile Cache<String, PublicKeysEntry> org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.keysCache
private

◆ log

final Logger org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.log = Logger.getLogger(InfinispanPublicKeyStorageProviderFactory.class)
staticprivate

◆ minTimeBetweenRequests

int org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.minTimeBetweenRequests
private

◆ PROVIDER_ID

final String org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.PROVIDER_ID = "infinispan"
static

◆ PUBLIC_KEY_STORAGE_INVALIDATION_EVENT

final String org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.PUBLIC_KEY_STORAGE_INVALIDATION_EVENT = "PUBLIC_KEY_STORAGE_INVALIDATION_EVENT"
static

◆ tasksInProgress

final Map<String, FutureTask<PublicKeysEntry> > org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory.tasksInProgress = new ConcurrentHashMap<>()
private

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