keycloak-service
クラス | 公開メンバ関数 | 静的公開メンバ関数 | 限定公開変数類 | 非公開メンバ関数 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.services.managers.ClientManager クラス
org.keycloak.services.managers.ClientManager 連携図
Collaboration graph

クラス

class  InstallationAdapterConfig
 

公開メンバ関数

 ClientManager (RealmManager realmManager)
 
 ClientManager ()
 
boolean removeClient (RealmModel realm, ClientModel client)
 
Set< String > validateRegisteredNodes (ClientModel client)
 
void enableServiceAccount (ClientModel client)
 
void clientIdChanged (ClientModel client, String newClientId)
 
InstallationAdapterConfig toInstallationRepresentation (RealmModel realmModel, ClientModel clientModel, URI baseUri)
 
String toJBossSubsystemConfig (RealmModel realmModel, ClientModel clientModel, URI baseUri)
 

静的公開メンバ関数

static ClientModel createClient (KeycloakSession session, RealmModel realm, ClientRepresentation rep, boolean addDefaultRoles)
 

限定公開変数類

RealmManager realmManager
 

非公開メンバ関数

boolean showClientCredentialsAdapterConfig (ClientModel client)
 
Map< String, Object > getClientCredentialsAdapterConfig (ClientModel client)
 

静的非公開変数類

static final Logger logger = Logger.getLogger(ClientManager.class)
 

詳解

著者
Bill Burke
バージョン
Revision
1

構築子と解体子

◆ ClientManager() [1/2]

org.keycloak.services.managers.ClientManager.ClientManager ( RealmManager  realmManager)
inline
61  {
63  }
RealmManager realmManager
Definition: ClientManager.java:59

◆ ClientManager() [2/2]

org.keycloak.services.managers.ClientManager.ClientManager ( )
inline
65  {
66  }

関数詳解

◆ clientIdChanged()

void org.keycloak.services.managers.ClientManager.clientIdChanged ( ClientModel  client,
String  newClientId 
)
inline
201  {
202  logger.debugf("Updating clientId from '%s' to '%s'", client.getClientId(), newClientId);
203 
204  UserModel serviceAccountUser = realmManager.getSession().users().getServiceAccount(client);
205  if (serviceAccountUser != null) {
206  String username = ServiceAccountConstants.SERVICE_ACCOUNT_USER_PREFIX + newClientId;
207  serviceAccountUser.setUsername(username);
208  serviceAccountUser.setEmail(username + "@placeholder.org");
209  }
210  }
static final Logger logger
Definition: ClientManager.java:57
RealmManager realmManager
Definition: ClientManager.java:59
KeycloakSession getSession()
Definition: RealmManager.java:85

◆ createClient()

static ClientModel org.keycloak.services.managers.ClientManager.createClient ( KeycloakSession  session,
RealmModel  realm,
ClientRepresentation  rep,
boolean  addDefaultRoles 
)
inlinestatic

Should not be called from an import. This really expects that the client is created from the admin console.

引数
session
realm
rep
addDefaultRoles
戻り値
77  {
78  ClientModel client = RepresentationToModel.createClient(session, realm, rep, addDefaultRoles);
79 
80  if (rep.getProtocol() != null) {
81  LoginProtocolFactory providerFactory = (LoginProtocolFactory) session.getKeycloakSessionFactory().getProviderFactory(LoginProtocol.class, rep.getProtocol());
82  providerFactory.setupClientDefaults(rep, client);
83  }
84 
85 
86  // remove default mappers if there is a template
87  if (rep.getProtocolMappers() == null && rep.getClientTemplate() != null) {
88  Set<ProtocolMapperModel> mappers = client.getProtocolMappers();
89  for (ProtocolMapperModel mapper : mappers) client.removeProtocolMapper(mapper);
90  }
91  return client;
92 
93  }

◆ enableServiceAccount()

void org.keycloak.services.managers.ClientManager.enableServiceAccount ( ClientModel  client)
inline
156  {
157  client.setServiceAccountsEnabled(true);
158 
159  // Add dedicated user for this service account
160  if (realmManager.getSession().users().getServiceAccount(client) == null) {
161  String username = ServiceAccountConstants.SERVICE_ACCOUNT_USER_PREFIX + client.getClientId();
162  logger.debugf("Creating service account user '%s'", username);
163 
164  // Don't use federation for service account user
165  UserModel user = realmManager.getSession().userLocalStorage().addUser(client.getRealm(), username);
166  user.setEnabled(true);
167  user.setEmail(username + "@placeholder.org");
168  user.setServiceAccountClientLink(client.getId());
169  }
170 
171  // Add protocol mappers to retrieve clientId in access token
172  if (client.getProtocolMapperByName(OIDCLoginProtocol.LOGIN_PROTOCOL, ServiceAccountConstants.CLIENT_ID_PROTOCOL_MAPPER) == null) {
173  logger.debugf("Creating service account protocol mapper '%s' for client '%s'", ServiceAccountConstants.CLIENT_ID_PROTOCOL_MAPPER, client.getClientId());
174  ProtocolMapperModel protocolMapper = UserSessionNoteMapper.createClaimMapper(ServiceAccountConstants.CLIENT_ID_PROTOCOL_MAPPER,
175  ServiceAccountConstants.CLIENT_ID,
176  ServiceAccountConstants.CLIENT_ID, "String",
177  true, true);
178  client.addProtocolMapper(protocolMapper);
179  }
180 
181  // Add protocol mappers to retrieve hostname and IP address of client in access token
182  if (client.getProtocolMapperByName(OIDCLoginProtocol.LOGIN_PROTOCOL, ServiceAccountConstants.CLIENT_HOST_PROTOCOL_MAPPER) == null) {
183  logger.debugf("Creating service account protocol mapper '%s' for client '%s'", ServiceAccountConstants.CLIENT_HOST_PROTOCOL_MAPPER, client.getClientId());
184  ProtocolMapperModel protocolMapper = UserSessionNoteMapper.createClaimMapper(ServiceAccountConstants.CLIENT_HOST_PROTOCOL_MAPPER,
185  ServiceAccountConstants.CLIENT_HOST,
186  ServiceAccountConstants.CLIENT_HOST, "String",
187  true, true);
188  client.addProtocolMapper(protocolMapper);
189  }
190 
191  if (client.getProtocolMapperByName(OIDCLoginProtocol.LOGIN_PROTOCOL, ServiceAccountConstants.CLIENT_ADDRESS_PROTOCOL_MAPPER) == null) {
192  logger.debugf("Creating service account protocol mapper '%s' for client '%s'", ServiceAccountConstants.CLIENT_ADDRESS_PROTOCOL_MAPPER, client.getClientId());
193  ProtocolMapperModel protocolMapper = UserSessionNoteMapper.createClaimMapper(ServiceAccountConstants.CLIENT_ADDRESS_PROTOCOL_MAPPER,
194  ServiceAccountConstants.CLIENT_ADDRESS,
195  ServiceAccountConstants.CLIENT_ADDRESS, "String",
196  true, true);
197  client.addProtocolMapper(protocolMapper);
198  }
199  }
static final Logger logger
Definition: ClientManager.java:57
RealmManager realmManager
Definition: ClientManager.java:59
KeycloakSession getSession()
Definition: RealmManager.java:85

◆ getClientCredentialsAdapterConfig()

Map<String, Object> org.keycloak.services.managers.ClientManager.getClientCredentialsAdapterConfig ( ClientModel  client)
inlineprivate
360  {
361  String clientAuthenticator = client.getClientAuthenticatorType();
362  ClientAuthenticatorFactory authenticator = (ClientAuthenticatorFactory) realmManager.getSession().getKeycloakSessionFactory().getProviderFactory(ClientAuthenticator.class, clientAuthenticator);
363  return authenticator.getAdapterConfiguration(client);
364  }
RealmManager realmManager
Definition: ClientManager.java:59
KeycloakSession getSession()
Definition: RealmManager.java:85

◆ removeClient()

boolean org.keycloak.services.managers.ClientManager.removeClient ( RealmModel  realm,
ClientModel  client 
)
inline
96  {
97  if (realm.removeClient(client.getId())) {
98  UserSessionProvider sessions = realmManager.getSession().sessions();
99  if (sessions != null) {
100  sessions.onClientRemoved(realm, client);
101  }
102 
103  UserSessionPersisterProvider sessionsPersister = realmManager.getSession().getProvider(UserSessionPersisterProvider.class);
104  if (sessionsPersister != null) {
105  sessionsPersister.onClientRemoved(realm, client);
106  }
107 
108  AuthenticationSessionProvider authSessions = realmManager.getSession().authenticationSessions();
109  if (authSessions != null) {
110  authSessions.onClientRemoved(realm, client);
111  }
112 
113  UserModel serviceAccountUser = realmManager.getSession().users().getServiceAccount(client);
114  if (serviceAccountUser != null) {
115  new UserManager(realmManager.getSession()).removeUser(realm, serviceAccountUser);
116  }
117 
118  return true;
119  } else {
120  return false;
121  }
122  }
RealmManager realmManager
Definition: ClientManager.java:59
KeycloakSession getSession()
Definition: RealmManager.java:85

◆ showClientCredentialsAdapterConfig()

boolean org.keycloak.services.managers.ClientManager.showClientCredentialsAdapterConfig ( ClientModel  client)
inlineprivate
348  {
349  if (client.isPublicClient()) {
350  return false;
351  }
352 
353  if (client.isBearerOnly() && client.getNodeReRegistrationTimeout() <= 0) {
354  return false;
355  }
356 
357  return true;
358  }

◆ toInstallationRepresentation()

InstallationAdapterConfig org.keycloak.services.managers.ClientManager.toInstallationRepresentation ( RealmModel  realmModel,
ClientModel  clientModel,
URI  baseUri 
)
inline
289  {
290  InstallationAdapterConfig rep = new InstallationAdapterConfig();
291  rep.setAuthServerUrl(baseUri.toString());
292  rep.setRealm(realmModel.getName());
293  rep.setSslRequired(realmModel.getSslRequired().name().toLowerCase());
294 
295  if (clientModel.isPublicClient() && !clientModel.isBearerOnly()) rep.setPublicClient(true);
296  if (clientModel.isBearerOnly()) rep.setBearerOnly(true);
297  if (clientModel.getRoles().size() > 0) rep.setUseResourceRoleMappings(true);
298 
299  rep.setResource(clientModel.getClientId());
300 
301  if (showClientCredentialsAdapterConfig(clientModel)) {
302  Map<String, Object> adapterConfig = getClientCredentialsAdapterConfig(clientModel);
303  rep.setCredentials(adapterConfig);
304  }
305 
306  return rep;
307  }
boolean showClientCredentialsAdapterConfig(ClientModel client)
Definition: ClientManager.java:348
Map< String, Object > getClientCredentialsAdapterConfig(ClientModel client)
Definition: ClientManager.java:360

◆ toJBossSubsystemConfig()

String org.keycloak.services.managers.ClientManager.toJBossSubsystemConfig ( RealmModel  realmModel,
ClientModel  clientModel,
URI  baseUri 
)
inline
309  {
310  StringBuffer buffer = new StringBuffer();
311  buffer.append("<secure-deployment name=\"WAR MODULE NAME.war\">\n");
312  buffer.append(" <realm>").append(realmModel.getName()).append("</realm>\n");
313  buffer.append(" <auth-server-url>").append(baseUri.toString()).append("</auth-server-url>\n");
314  if (clientModel.isBearerOnly()){
315  buffer.append(" <bearer-only>true</bearer-only>\n");
316 
317  } else if (clientModel.isPublicClient()) {
318  buffer.append(" <public-client>true</public-client>\n");
319  }
320  buffer.append(" <ssl-required>").append(realmModel.getSslRequired().name()).append("</ssl-required>\n");
321  buffer.append(" <resource>").append(clientModel.getClientId()).append("</resource>\n");
322  String cred = clientModel.getSecret();
323  if (showClientCredentialsAdapterConfig(clientModel)) {
324  Map<String, Object> adapterConfig = getClientCredentialsAdapterConfig(clientModel);
325  for (Map.Entry<String, Object> entry : adapterConfig.entrySet()) {
326  buffer.append(" <credential name=\"" + entry.getKey() + "\">");
327 
328  Object value = entry.getValue();
329  if (value instanceof Map) {
330  buffer.append("\n");
331  Map<String, Object> asMap = (Map<String, Object>) value;
332  for (Map.Entry<String, Object> credEntry : asMap.entrySet()) {
333  buffer.append(" <" + credEntry.getKey() + ">" + credEntry.getValue().toString() + "</" + credEntry.getKey() + ">\n");
334  }
335  buffer.append(" </credential>\n");
336  } else {
337  buffer.append(value.toString()).append("</credential>\n");
338  }
339  }
340  }
341  if (clientModel.getRoles().size() > 0) {
342  buffer.append(" <use-resource-role-mappings>true</use-resource-role-mappings>\n");
343  }
344  buffer.append("</secure-deployment>\n");
345  return buffer.toString();
346  }
boolean showClientCredentialsAdapterConfig(ClientModel client)
Definition: ClientManager.java:348
Map< String, Object > getClientCredentialsAdapterConfig(ClientModel client)
Definition: ClientManager.java:360

◆ validateRegisteredNodes()

Set<String> org.keycloak.services.managers.ClientManager.validateRegisteredNodes ( ClientModel  client)
inline
124  {
125  Map<String, Integer> registeredNodes = client.getRegisteredNodes();
126  if (registeredNodes == null || registeredNodes.isEmpty()) {
127  return Collections.emptySet();
128  }
129 
130  int currentTime = Time.currentTime();
131 
132  Set<String> validatedNodes = new TreeSet<String>();
133  if (client.getNodeReRegistrationTimeout() > 0) {
134  List<String> toRemove = new LinkedList<String>();
135  for (Map.Entry<String, Integer> entry : registeredNodes.entrySet()) {
136  Integer lastReRegistration = entry.getValue();
137  if (lastReRegistration + client.getNodeReRegistrationTimeout() < currentTime) {
138  toRemove.add(entry.getKey());
139  } else {
140  validatedNodes.add(entry.getKey());
141  }
142  }
143 
144  // Remove time-outed nodes
145  for (String node : toRemove) {
146  client.unregisterNode(node);
147  }
148  } else {
149  // Periodic node reRegistration is disabled, so allow all nodes
150  validatedNodes.addAll(registeredNodes.keySet());
151  }
152 
153  return validatedNodes;
154  }

メンバ詳解

◆ logger

final Logger org.keycloak.services.managers.ClientManager.logger = Logger.getLogger(ClientManager.class)
staticprivate

◆ realmManager

RealmManager org.keycloak.services.managers.ClientManager.realmManager
protected

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