keycloak
公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory クラス
org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory の継承関係図
Inheritance graph
org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory 連携図
Collaboration graph

公開メンバ関数

String getName ()
 
String getGroup ()
 
PolicyProvider create (AuthorizationProvider authorization)
 
ClientPolicyRepresentation toRepresentation (Policy policy, AuthorizationProvider authorization)
 
Class< ClientPolicyRepresentationgetRepresentationType ()
 
void onCreate (Policy policy, ClientPolicyRepresentation representation, AuthorizationProvider authorization)
 
void onUpdate (Policy policy, ClientPolicyRepresentation representation, AuthorizationProvider authorization)
 
void onImport (Policy policy, PolicyRepresentation representation, AuthorizationProvider authorization)
 
void onExport (Policy policy, PolicyRepresentation representation, AuthorizationProvider authorization)
 
PolicyProvider create (KeycloakSession session)
 
void init (Config.Scope config)
 
void postInit (KeycloakSessionFactory factory)
 
void close ()
 
String getId ()
 
default boolean isInternal ()
 
default void onCreate (Policy policy, R representation, AuthorizationProvider authorization)
 
default void onUpdate (Policy policy, R representation, AuthorizationProvider authorization)
 
default void onRemove (Policy policy, AuthorizationProvider authorization)
 
default PolicyProviderAdminService getAdminResource (ResourceServer resourceServer, AuthorizationProvider authorization)
 
void init (Config.Scope config)
 
default int order ()
 

非公開メンバ関数

void updateClients (Policy policy, Set< String > clients, AuthorizationProvider authorization)
 
String [] getClients (Policy policy)
 

非公開変数類

ClientPolicyProvider provider = new ClientPolicyProvider(this::toRepresentation)
 

詳解

関数詳解

◆ close()

void org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.close ( )
inline

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

140  {
141 
142  }

◆ create() [1/2]

PolicyProvider org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.create ( AuthorizationProvider  authorization)
inline

◆ create() [2/2]

PolicyProvider org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.create ( KeycloakSession  session)
inline

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

93  {
94  return null;
95  }

◆ getAdminResource()

org.keycloak.authorization.policy.provider.drools.DroolsPolicyProviderFactoryで実装されています。

66  {
67  return null;
68  }

◆ getClients()

String [] org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.getClients ( Policy  policy)
inlineprivate
179  {
180  String clients = policy.getConfig().get("clients");
181 
182  if (clients != null) {
183  try {
184  return JsonSerialization.readValue(clients.getBytes(), String[].class);
185  } catch (IOException e) {
186  throw new RuntimeException("Could not parse clients [" + clients + "] from policy config [" + policy.getName() + "].", e);
187  }
188  }
189 
190  return new String[]{};
191  }

◆ getGroup()

String org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.getGroup ( )
inline

org.keycloak.authorization.policy.provider.PolicyProviderFactory< R extends AbstractPolicyRepresentation >を実装しています。

41  {
42  return "Identity Based";
43  }

◆ getId()

String org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.getId ( )
inline

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

145  {
146  return "client";
147  }

◆ getName()

String org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.getName ( )
inline

◆ getRepresentationType()

Class<ClientPolicyRepresentation> org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.getRepresentationType ( )
inline

org.keycloak.authorization.policy.provider.PolicyProviderFactory< R extends AbstractPolicyRepresentation >を実装しています。

58  {
59  return ClientPolicyRepresentation.class;
60  }

◆ init() [1/2]

void org.keycloak.provider.ProviderFactory< T extends Provider >.init ( Config.Scope  config)
inherited

Only called once when the factory is first created. This config is pulled from keycloak_server.json

引数
config

org.keycloak.cluster.infinispan.InfinispanClusterProviderFactory, org.keycloak.connections.jpa.updater.liquibase.conn.DefaultLiquibaseConnectionProvider, org.keycloak.connections.jpa.DefaultJpaConnectionProviderFactory, org.keycloak.policy.BlacklistPasswordPolicyProviderFactory, org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory, org.keycloak.keys.infinispan.InfinispanPublicKeyStorageProviderFactory, org.keycloak.models.cache.infinispan.InfinispanUserCacheProviderFactory, org.keycloak.models.cache.infinispan.InfinispanCacheRealmProviderFactory, org.keycloak.storage.UserStorageProviderFactory< T extends UserStorageProvider >, org.keycloak.storage.client.ClientStorageProviderFactory< T extends ClientStorageProvider >, org.keycloak.models.session.DisabledUserSessionPersisterProvider, org.keycloak.models.sessions.infinispan.InfinispanActionTokenStoreProviderFactory, org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProviderFactory, org.keycloak.policy.HashAlgorithmPasswordPolicyProviderFactory, org.keycloak.policy.HistoryPasswordPolicyProviderFactory, org.keycloak.models.jpa.session.JpaUserSessionPersisterProviderFactory, org.keycloak.policy.DigitsPasswordPolicyProviderFactory, org.keycloak.policy.LengthPasswordPolicyProviderFactory, org.keycloak.policy.NotUsernamePasswordPolicyProviderFactory, org.keycloak.policy.RegexPatternsPasswordPolicyProviderFactory, org.keycloak.events.jpa.JpaEventStoreProviderFactory, org.keycloak.credential.hash.Pbkdf2PasswordHashProviderFactory, org.keycloak.storage.jpa.JpaUserFederatedStorageProviderFactory, org.keycloak.policy.ForceExpiredPasswordPolicyProviderFactory, org.keycloak.policy.HashIterationsPasswordPolicyProviderFactory, org.keycloak.credential.CredentialProviderFactory< T extends CredentialProvider >, org.keycloak.connections.jpa.updater.liquibase.LiquibaseJpaUpdaterProviderFactory, org.keycloak.policy.LowerCasePasswordPolicyProviderFactory, org.keycloak.policy.SpecialCharsPasswordPolicyProviderFactory, org.keycloak.policy.UpperCasePasswordPolicyProviderFactory, org.keycloak.models.jpa.JpaRealmProviderFactory, org.keycloak.models.jpa.JpaUserCredentialStoreFactory, org.keycloak.models.jpa.JpaUserProviderFactory, org.keycloak.policy.DefaultPasswordPolicyManagerProviderFactory, org.keycloak.protocol.AbstractLoginProtocolFactory, org.keycloak.keys.KeyProviderFactory< T extends KeyProvider >, org.keycloak.urls.HostnameProviderFactory, org.keycloak.credential.hash.Pbkdf2Sha256PasswordHashProviderFactory, org.keycloak.credential.hash.Pbkdf2Sha512PasswordHashProviderFactory (計39項目)で実装されています。

◆ init() [2/2]

void org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.init ( Config.Scope  config)
inline
98  {
99 
100  }

◆ isInternal()

default boolean org.keycloak.authorization.policy.provider.PolicyProviderFactory< R extends AbstractPolicyRepresentation >.isInternal ( )
inlineinherited

org.keycloak.authorization.policy.provider.permission.UMAPolicyProviderFactoryで実装されています。

37  {
38  return false;
39  }

◆ onCreate() [1/2]

default void org.keycloak.authorization.policy.provider.PolicyProviderFactory< R extends AbstractPolicyRepresentation >.onCreate ( Policy  policy,
representation,
AuthorizationProvider  authorization 
)
inlineinherited
47  {
48 
49  }

◆ onCreate() [2/2]

void org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.onCreate ( Policy  policy,
ClientPolicyRepresentation  representation,
AuthorizationProvider  authorization 
)
inline
63  {
64  updateClients(policy, representation.getClients(), authorization);
65  }
void updateClients(Policy policy, Set< String > clients, AuthorizationProvider authorization)
Definition: ClientPolicyProviderFactory.java:149

◆ onExport()

void org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.onExport ( Policy  policy,
PolicyRepresentation  representation,
AuthorizationProvider  authorization 
)
inline

org.keycloak.authorization.policy.provider.PolicyProviderFactory< R extends AbstractPolicyRepresentation >を実装しています。

78  {
79  ClientPolicyRepresentation userRep = toRepresentation(policy, authorization);
80  Map<String, String> config = new HashMap<>();
81 
82  try {
83  RealmModel realm = authorization.getRealm();
84  config.put("clients", JsonSerialization.writeValueAsString(userRep.getClients().stream().map(id -> realm.getClientById(id).getClientId()).collect(Collectors.toList())));
85  } catch (IOException cause) {
86  throw new RuntimeException("Failed to export user policy [" + policy.getName() + "]", cause);
87  }
88 
89  representation.setConfig(config);
90  }
ClientPolicyRepresentation toRepresentation(Policy policy, AuthorizationProvider authorization)
Definition: ClientPolicyProviderFactory.java:51

◆ onImport()

void org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.onImport ( Policy  policy,
PolicyRepresentation  representation,
AuthorizationProvider  authorization 
)
inline

org.keycloak.authorization.policy.provider.PolicyProviderFactory< R extends AbstractPolicyRepresentation >を実装しています。

73  {
74  updateClients(policy, new HashSet<>(Arrays.asList(getClients(policy))), authorization);
75  }
String [] getClients(Policy policy)
Definition: ClientPolicyProviderFactory.java:179
void updateClients(Policy policy, Set< String > clients, AuthorizationProvider authorization)
Definition: ClientPolicyProviderFactory.java:149

◆ onRemove()

default void org.keycloak.authorization.policy.provider.PolicyProviderFactory< R extends AbstractPolicyRepresentation >.onRemove ( Policy  policy,
AuthorizationProvider  authorization 
)
inlineinherited

◆ onUpdate() [1/2]

default void org.keycloak.authorization.policy.provider.PolicyProviderFactory< R extends AbstractPolicyRepresentation >.onUpdate ( Policy  policy,
representation,
AuthorizationProvider  authorization 
)
inlineinherited
51  {
52 
53  }

◆ onUpdate() [2/2]

void org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.onUpdate ( Policy  policy,
ClientPolicyRepresentation  representation,
AuthorizationProvider  authorization 
)
inline
68  {
69  updateClients(policy, representation.getClients(), authorization);
70  }
void updateClients(Policy policy, Set< String > clients, AuthorizationProvider authorization)
Definition: ClientPolicyProviderFactory.java:149

◆ order()

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

org.keycloak.urls.HostnameProviderFactoryで実装されています。

56  {
57  return 0;
58  }

◆ postInit()

void org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.postInit ( KeycloakSessionFactory  factory)
inline

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

103  {
104  factory.register(event -> {
105  if (event instanceof ClientRemovedEvent) {
106  KeycloakSession keycloakSession = ((ClientRemovedEvent) event).getKeycloakSession();
107  AuthorizationProvider provider = keycloakSession.getProvider(AuthorizationProvider.class);
108  StoreFactory storeFactory = provider.getStoreFactory();
109  PolicyStore policyStore = storeFactory.getPolicyStore();
110  ClientModel removedClient = ((ClientRemovedEvent) event).getClient();
111  ResourceServerStore resourceServerStore = storeFactory.getResourceServerStore();
112  ResourceServer resourceServer = resourceServerStore.findById(removedClient.getId());
113 
114  if (resourceServer != null) {
115  policyStore.findByType(getId(), resourceServer.getId()).forEach(policy -> {
116  List<String> clients = new ArrayList<>();
117 
118  for (String clientId : getClients(policy)) {
119  if (!clientId.equals(removedClient.getId())) {
120  clients.add(clientId);
121  }
122  }
123 
124  try {
125  if (clients.isEmpty()) {
126  policyStore.delete(policy.getId());
127  } else {
128  policy.putConfig("clients", JsonSerialization.writeValueAsString(clients));
129  }
130  } catch (IOException e) {
131  throw new RuntimeException("Error while synchronizing clients with policy [" + policy.getName() + "].", e);
132  }
133  });
134  }
135  }
136  });
137  }
String [] getClients(Policy policy)
Definition: ClientPolicyProviderFactory.java:179
ClientPolicyProvider provider
Definition: ClientPolicyProviderFactory.java:33
String getId()
Definition: ClientPolicyProviderFactory.java:145

◆ toRepresentation()

ClientPolicyRepresentation org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.toRepresentation ( Policy  policy,
AuthorizationProvider  authorization 
)
inline

org.keycloak.authorization.policy.provider.PolicyProviderFactory< R extends AbstractPolicyRepresentation >を実装しています。

51  {
52  ClientPolicyRepresentation representation = new ClientPolicyRepresentation();
53  representation.setClients(new HashSet<>(Arrays.asList(getClients(policy))));
54  return representation;
55  }
String [] getClients(Policy policy)
Definition: ClientPolicyProviderFactory.java:179

◆ updateClients()

void org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.updateClients ( Policy  policy,
Set< String >  clients,
AuthorizationProvider  authorization 
)
inlineprivate
149  {
150  RealmModel realm = authorization.getRealm();
151 
152  if (clients == null || clients.isEmpty()) {
153  throw new RuntimeException("No client provided.");
154  }
155 
156  Set<String> updatedClients = new HashSet<>();
157 
158  for (String id : clients) {
159  ClientModel client = realm.getClientByClientId(id);
160 
161  if (client == null) {
162  client = realm.getClientById(id);
163  }
164 
165  if (client == null) {
166  throw new RuntimeException("Error while updating policy [" + policy.getName() + "]. Client [" + id + "] could not be found.");
167  }
168 
169  updatedClients.add(client.getId());
170  }
171 
172  try {
173  policy.putConfig("clients", JsonSerialization.writeValueAsString(updatedClients));
174  } catch (IOException cause) {
175  throw new RuntimeException("Failed to serialize clients", cause);
176  }
177  }

メンバ詳解

◆ provider

ClientPolicyProvider org.keycloak.authorization.policy.provider.client.ClientPolicyProviderFactory.provider = new ClientPolicyProvider(this::toRepresentation)
private

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