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

公開メンバ関数

 IdentityProviderResource (AdminPermissionEvaluator auth, RealmModel realm, KeycloakSession session, IdentityProviderModel identityProviderModel, AdminEventBuilder adminEvent)
 
IdentityProviderRepresentation getIdentityProvider ()
 
Response delete ()
 
Response update (IdentityProviderRepresentation providerRep)
 
Response export (@QueryParam("format") String format)
 
Map< String, IdentityProviderMapperTypeRepresentation > getMapperTypes ()
 
List< IdentityProviderMapperRepresentation > getMappers ()
 
Response addMapper (IdentityProviderMapperRepresentation mapper)
 
IdentityProviderMapperRepresentation getMapperById (@PathParam("id") String id)
 
void update (@PathParam("id") String id, IdentityProviderMapperRepresentation rep)
 
void delete (@PathParam("id") String id)
 
ManagementPermissionReference getManagementPermissions ()
 
ManagementPermissionReference setManagementPermissionsEnabled (ManagementPermissionReference ref)
 

静的公開メンバ関数

static ManagementPermissionReference toMgmtRef (IdentityProviderModel model, AdminPermissionManagement permissions)
 

静的限定公開変数類

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

非公開メンバ関数

void updateIdpFromRep (IdentityProviderRepresentation providerRep, RealmModel realm, KeycloakSession session)
 
IdentityProviderFactory getIdentityProviderFactory ()
 

静的非公開メンバ関数

static String getProviderIdByInternalId (RealmModel realm, String providerInternalId)
 
static void updateUsersAfterProviderAliasChange (List< UserModel > users, String oldProviderId, String newProviderId, RealmModel realm, KeycloakSession session)
 

非公開変数類

final AdminPermissionEvaluator auth
 
final RealmModel realm
 
final KeycloakSession session
 
final IdentityProviderModel identityProviderModel
 
final AdminEventBuilder adminEvent
 

詳解

Identity Providers

著者
Pedro Igor

構築子と解体子

◆ IdentityProviderResource()

org.keycloak.services.resources.admin.IdentityProviderResource.IdentityProviderResource ( AdminPermissionEvaluator  auth,
RealmModel  realm,
KeycloakSession  session,
IdentityProviderModel  identityProviderModel,
AdminEventBuilder  adminEvent 
)
inline
89  {
90  this.realm = realm;
91  this.session = session;
93  this.auth = auth;
94  this.adminEvent = adminEvent.resource(ResourceType.IDENTITY_PROVIDER);
95  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminEventBuilder adminEvent
Definition: IdentityProviderResource.java:87
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83
AdminEventBuilder resource(ResourceType resourceType)
Definition: AdminEventBuilder.java:118
final KeycloakSession session
Definition: IdentityProviderResource.java:85

関数詳解

◆ addMapper()

Response org.keycloak.services.resources.admin.IdentityProviderResource.addMapper ( IdentityProviderMapperRepresentation  mapper)
inline

Add a mapper to identity provider

引数
mapper
戻り値
325  {
327 
328  if (identityProviderModel == null) {
329  throw new javax.ws.rs.NotFoundException();
330  }
331 
332  IdentityProviderMapperModel model = RepresentationToModel.toModel(mapper);
333  try {
334  model = realm.addIdentityProviderMapper(model);
335  } catch (Exception e) {
336  return ErrorResponse.error("Failed to add mapper '" + model.getName() + "' to identity provider [" + identityProviderModel.getProviderId() + "].", Response.Status.BAD_REQUEST);
337  }
338 
339  adminEvent.operation(OperationType.CREATE).resource(ResourceType.IDENTITY_PROVIDER_MAPPER).resourcePath(session.getContext().getUri(), model.getId())
340  .representation(mapper).success();
341 
342  return Response.created(session.getContext().getUri().getAbsolutePathBuilder().path(model.getId()).build()).build();
343 
344  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminEventBuilder adminEvent
Definition: IdentityProviderResource.java:87
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83
AdminEventBuilder resource(ResourceType resourceType)
Definition: AdminEventBuilder.java:118
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
final KeycloakSession session
Definition: IdentityProviderResource.java:85
void success()
Definition: AdminEventBuilder.java:226
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171

◆ delete() [1/2]

Response org.keycloak.services.resources.admin.IdentityProviderResource.delete ( )
inline

Delete the identity provider

戻り値
123  {
125 
126  if (identityProviderModel == null) {
127  throw new javax.ws.rs.NotFoundException();
128  }
129 
130  String alias = this.identityProviderModel.getAlias();
131  this.realm.removeIdentityProviderByAlias(alias);
132 
133  Set<IdentityProviderMapperModel> mappers = this.realm.getIdentityProviderMappersByAlias(alias);
134  for (IdentityProviderMapperModel mapper : mappers) {
135  this.realm.removeIdentityProviderMapper(mapper);
136  }
137 
138  adminEvent.operation(OperationType.DELETE).resourcePath(session.getContext().getUri()).success();
139 
140  return Response.noContent().build();
141  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminEventBuilder adminEvent
Definition: IdentityProviderResource.java:87
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
final KeycloakSession session
Definition: IdentityProviderResource.java:85
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171

◆ delete() [2/2]

void org.keycloak.services.resources.admin.IdentityProviderResource.delete ( @PathParam("id") String  id)
inline

Delete a mapper for the identity provider

引数
idMapper id
401  {
403 
404  if (identityProviderModel == null) {
405  throw new javax.ws.rs.NotFoundException();
406  }
407 
408  IdentityProviderMapperModel model = realm.getIdentityProviderMapperById(id);
409  if (model == null) throw new NotFoundException("Model not found");
410  realm.removeIdentityProviderMapper(model);
411  adminEvent.operation(OperationType.DELETE).resource(ResourceType.IDENTITY_PROVIDER_MAPPER).resourcePath(session.getContext().getUri()).success();
412 
413  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminEventBuilder adminEvent
Definition: IdentityProviderResource.java:87
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83
AdminEventBuilder resource(ResourceType resourceType)
Definition: AdminEventBuilder.java:118
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
final KeycloakSession session
Definition: IdentityProviderResource.java:85
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171

◆ export()

Response org.keycloak.services.resources.admin.IdentityProviderResource.export ( @QueryParam("format") String  format)
inline

Export public broker configuration for identity provider

引数
formatFormat to use
戻り値
242  {
244 
245  if (identityProviderModel == null) {
246  throw new javax.ws.rs.NotFoundException();
247  }
248 
249  try {
250  IdentityProviderFactory factory = getIdentityProviderFactory();
251  return factory.create(session, identityProviderModel).export(session.getContext().getUri(), realm, format);
252  } catch (Exception e) {
253  return ErrorResponse.error("Could not export public broker configuration for identity provider [" + identityProviderModel.getProviderId() + "].", Response.Status.NOT_FOUND);
254  }
255  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83
IdentityProviderFactory getIdentityProviderFactory()
Definition: IdentityProviderResource.java:220
final KeycloakSession session
Definition: IdentityProviderResource.java:85

◆ getIdentityProvider()

IdentityProviderRepresentation org.keycloak.services.resources.admin.IdentityProviderResource.getIdentityProvider ( )
inline

Get the identity provider

戻り値
105  {
107 
108  if (identityProviderModel == null) {
109  throw new javax.ws.rs.NotFoundException();
110  }
111 
112  IdentityProviderRepresentation rep = ModelToRepresentation.toRepresentation(realm, this.identityProviderModel);
113  return StripSecretsUtils.strip(rep);
114  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83

◆ getIdentityProviderFactory()

IdentityProviderFactory org.keycloak.services.resources.admin.IdentityProviderResource.getIdentityProviderFactory ( )
inlineprivate
220  {
221  List<ProviderFactory> allProviders = new ArrayList<ProviderFactory>();
222 
223  allProviders.addAll(this.session.getKeycloakSessionFactory().getProviderFactories(IdentityProvider.class));
224  allProviders.addAll(this.session.getKeycloakSessionFactory().getProviderFactories(SocialIdentityProvider.class));
225 
226  for (ProviderFactory providerFactory : allProviders) {
227  if (providerFactory.getId().equals(identityProviderModel.getProviderId())) return (IdentityProviderFactory)providerFactory;
228  }
229 
230  return null;
231  }
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final KeycloakSession session
Definition: IdentityProviderResource.java:85

◆ getManagementPermissions()

ManagementPermissionReference org.keycloak.services.resources.admin.IdentityProviderResource.getManagementPermissions ( )
inline

Return object stating whether client Authorization permissions have been initialized or not and a reference

戻り値
424  {
426 
427  AdminPermissionManagement permissions = AdminPermissions.management(session, realm);
428  if (!permissions.idps().isPermissionsEnabled(identityProviderModel)) {
429  return new ManagementPermissionReference();
430  }
431  return toMgmtRef(identityProviderModel, permissions);
432  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83
final KeycloakSession session
Definition: IdentityProviderResource.java:85
static ManagementPermissionReference toMgmtRef(IdentityProviderModel model, AdminPermissionManagement permissions)
Definition: IdentityProviderResource.java:434

◆ getMapperById()

IdentityProviderMapperRepresentation org.keycloak.services.resources.admin.IdentityProviderResource.getMapperById ( @PathParam("id") String  id)
inline

Get mapper by id for the identity provider

引数
id
戻り値
356  {
358 
359  if (identityProviderModel == null) {
360  throw new javax.ws.rs.NotFoundException();
361  }
362 
363  IdentityProviderMapperModel model = realm.getIdentityProviderMapperById(id);
364  if (model == null) throw new NotFoundException("Model not found");
365  return ModelToRepresentation.toRepresentation(model);
366  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83

◆ getMappers()

List<IdentityProviderMapperRepresentation> org.keycloak.services.resources.admin.IdentityProviderResource.getMappers ( )
inline

Get mappers for identity provider

302  {
304 
305  if (identityProviderModel == null) {
306  throw new javax.ws.rs.NotFoundException();
307  }
308 
309  List<IdentityProviderMapperRepresentation> mappers = new LinkedList<>();
310  for (IdentityProviderMapperModel model : realm.getIdentityProviderMappersByAlias(identityProviderModel.getAlias())) {
311  mappers.add(ModelToRepresentation.toRepresentation(model));
312  }
313  return mappers;
314  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83

◆ getMapperTypes()

Map<String, IdentityProviderMapperTypeRepresentation> org.keycloak.services.resources.admin.IdentityProviderResource.getMapperTypes ( )
inline

Get mapper types for identity provider

263  {
265 
266  if (identityProviderModel == null) {
267  throw new javax.ws.rs.NotFoundException();
268  }
269 
270  KeycloakSessionFactory sessionFactory = session.getKeycloakSessionFactory();
271  Map<String, IdentityProviderMapperTypeRepresentation> types = new HashMap<>();
272  List<ProviderFactory> factories = sessionFactory.getProviderFactories(IdentityProviderMapper.class);
273  for (ProviderFactory factory : factories) {
274  IdentityProviderMapper mapper = (IdentityProviderMapper)factory;
275  for (String type : mapper.getCompatibleProviders()) {
276  if (IdentityProviderMapper.ANY_PROVIDER.equals(type) || type.equals(identityProviderModel.getProviderId())) {
277  IdentityProviderMapperTypeRepresentation rep = new IdentityProviderMapperTypeRepresentation();
278  rep.setId(mapper.getId());
279  rep.setCategory(mapper.getDisplayCategory());
280  rep.setName(mapper.getDisplayType());
281  rep.setHelpText(mapper.getHelpText());
282  List<ProviderConfigProperty> configProperties = mapper.getConfigProperties();
283  for (ProviderConfigProperty prop : configProperties) {
284  ConfigPropertyRepresentation propRep = ModelToRepresentation.toRepresentation(prop);
285  rep.getProperties().add(propRep);
286  }
287  types.put(rep.getId(), rep);
288  break;
289  }
290  }
291  }
292  return types;
293  }
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83
final KeycloakSession session
Definition: IdentityProviderResource.java:85

◆ getProviderIdByInternalId()

static String org.keycloak.services.resources.admin.IdentityProviderResource.getProviderIdByInternalId ( RealmModel  realm,
String  providerInternalId 
)
inlinestaticprivate
193  {
194  List<IdentityProviderModel> providerModels = realm.getIdentityProviders();
195  for (IdentityProviderModel providerModel : providerModels) {
196  if (providerModel.getInternalId().equals(providerInternalId)) {
197  return providerModel.getAlias();
198  }
199  }
200 
201  return null;
202  }
final RealmModel realm
Definition: IdentityProviderResource.java:84

◆ setManagementPermissionsEnabled()

ManagementPermissionReference org.keycloak.services.resources.admin.IdentityProviderResource.setManagementPermissionsEnabled ( ManagementPermissionReference  ref)
inline

Return object stating whether client Authorization permissions have been initialized or not and a reference

戻り値
initialized manage permissions reference
454  {
456  AdminPermissionManagement permissions = AdminPermissions.management(session, realm);
457  permissions.idps().setPermissionsEnabled(identityProviderModel, ref.isEnabled());
458  if (ref.isEnabled()) {
459  return toMgmtRef(identityProviderModel, permissions);
460  } else {
461  return new ManagementPermissionReference();
462  }
463  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83
final KeycloakSession session
Definition: IdentityProviderResource.java:85
static ManagementPermissionReference toMgmtRef(IdentityProviderModel model, AdminPermissionManagement permissions)
Definition: IdentityProviderResource.java:434

◆ toMgmtRef()

static ManagementPermissionReference org.keycloak.services.resources.admin.IdentityProviderResource.toMgmtRef ( IdentityProviderModel  model,
AdminPermissionManagement  permissions 
)
inlinestatic
434  {
435  ManagementPermissionReference ref = new ManagementPermissionReference();
436  ref.setEnabled(true);
437  ref.setResource(permissions.idps().resource(model).getId());
438  ref.setScopePermissions(permissions.idps().getPermissions(model));
439  return ref;
440  }

◆ update() [1/2]

Response org.keycloak.services.resources.admin.IdentityProviderResource.update ( IdentityProviderRepresentation  providerRep)
inline

Update the identity provider

引数
providerRep
戻り値
152  {
154 
155  if (identityProviderModel == null) {
156  throw new javax.ws.rs.NotFoundException();
157  }
158 
159  try {
160  updateIdpFromRep(providerRep, realm, session);
161 
162  adminEvent.operation(OperationType.UPDATE).resourcePath(session.getContext().getUri()).representation(providerRep).success();
163 
164  return Response.noContent().build();
165  } catch (ModelDuplicateException e) {
166  return ErrorResponse.exists("Identity Provider " + providerRep.getAlias() + " already exists");
167  }
168  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminEventBuilder adminEvent
Definition: IdentityProviderResource.java:87
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
final KeycloakSession session
Definition: IdentityProviderResource.java:85
void success()
Definition: AdminEventBuilder.java:226
void updateIdpFromRep(IdentityProviderRepresentation providerRep, RealmModel realm, KeycloakSession session)
Definition: IdentityProviderResource.java:170
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171

◆ update() [2/2]

void org.keycloak.services.resources.admin.IdentityProviderResource.update ( @PathParam("id") String  id,
IdentityProviderMapperRepresentation  rep 
)
inline

Update a mapper for the identity provider

引数
idMapper id
rep
378  {
380 
381  if (identityProviderModel == null) {
382  throw new javax.ws.rs.NotFoundException();
383  }
384 
385  IdentityProviderMapperModel model = realm.getIdentityProviderMapperById(id);
386  if (model == null) throw new NotFoundException("Model not found");
387  model = RepresentationToModel.toModel(rep);
388  realm.updateIdentityProviderMapper(model);
389  adminEvent.operation(OperationType.UPDATE).resource(ResourceType.IDENTITY_PROVIDER_MAPPER).resourcePath(session.getContext().getUri()).representation(rep).success();
390 
391  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
final AdminEventBuilder adminEvent
Definition: IdentityProviderResource.java:87
final AdminPermissionEvaluator auth
Definition: IdentityProviderResource.java:83
AdminEventBuilder resource(ResourceType resourceType)
Definition: AdminEventBuilder.java:118
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
final KeycloakSession session
Definition: IdentityProviderResource.java:85
void success()
Definition: AdminEventBuilder.java:226
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171

◆ updateIdpFromRep()

void org.keycloak.services.resources.admin.IdentityProviderResource.updateIdpFromRep ( IdentityProviderRepresentation  providerRep,
RealmModel  realm,
KeycloakSession  session 
)
inlineprivate
170  {
171  String internalId = providerRep.getInternalId();
172  String newProviderId = providerRep.getAlias();
173  String oldProviderId = getProviderIdByInternalId(realm, internalId);
174 
175  IdentityProviderModel updated = RepresentationToModel.toModel(realm, providerRep);
176 
177  if (updated.getConfig() != null && ComponentRepresentation.SECRET_VALUE.equals(updated.getConfig().get("clientSecret"))) {
178  updated.getConfig().put("clientSecret", identityProviderModel.getConfig() != null ? identityProviderModel.getConfig().get("clientSecret") : null);
179  }
180 
181  realm.updateIdentityProvider(updated);
182 
183  if (oldProviderId != null && !oldProviderId.equals(newProviderId)) {
184 
185  // Admin changed the ID (alias) of identity provider. We must update all clients and users
186  logger.debug("Changing providerId in all clients and linked users. oldProviderId=" + oldProviderId + ", newProviderId=" + newProviderId);
187 
188  updateUsersAfterProviderAliasChange(session.users().getUsers(realm, false), oldProviderId, newProviderId, realm, session);
189  }
190  }
static void updateUsersAfterProviderAliasChange(List< UserModel > users, String oldProviderId, String newProviderId, RealmModel realm, KeycloakSession session)
Definition: IdentityProviderResource.java:204
final RealmModel realm
Definition: IdentityProviderResource.java:84
final IdentityProviderModel identityProviderModel
Definition: IdentityProviderResource.java:86
static String getProviderIdByInternalId(RealmModel realm, String providerInternalId)
Definition: IdentityProviderResource.java:193
static final Logger logger
Definition: IdentityProviderResource.java:81
final KeycloakSession session
Definition: IdentityProviderResource.java:85

◆ updateUsersAfterProviderAliasChange()

static void org.keycloak.services.resources.admin.IdentityProviderResource.updateUsersAfterProviderAliasChange ( List< UserModel >  users,
String  oldProviderId,
String  newProviderId,
RealmModel  realm,
KeycloakSession  session 
)
inlinestaticprivate
204  {
205  for (UserModel user : users) {
206  FederatedIdentityModel federatedIdentity = session.users().getFederatedIdentity(user, oldProviderId, realm);
207  if (federatedIdentity != null) {
208  // Remove old link first
209  session.users().removeFederatedIdentity(realm, user, oldProviderId);
210 
211  // And create new
212  FederatedIdentityModel newFederatedIdentity = new FederatedIdentityModel(newProviderId, federatedIdentity.getUserId(), federatedIdentity.getUserName(),
213  federatedIdentity.getToken());
214  session.users().addFederatedIdentity(realm, user, newFederatedIdentity);
215  }
216  }
217  }
final RealmModel realm
Definition: IdentityProviderResource.java:84
final KeycloakSession session
Definition: IdentityProviderResource.java:85

メンバ詳解

◆ adminEvent

final AdminEventBuilder org.keycloak.services.resources.admin.IdentityProviderResource.adminEvent
private

◆ auth

final AdminPermissionEvaluator org.keycloak.services.resources.admin.IdentityProviderResource.auth
private

◆ identityProviderModel

final IdentityProviderModel org.keycloak.services.resources.admin.IdentityProviderResource.identityProviderModel
private

◆ logger

final Logger org.keycloak.services.resources.admin.IdentityProviderResource.logger = Logger.getLogger(IdentityProviderResource.class)
staticprotected

◆ realm

final RealmModel org.keycloak.services.resources.admin.IdentityProviderResource.realm
private

◆ session

final KeycloakSession org.keycloak.services.resources.admin.IdentityProviderResource.session
private

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