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

公開メンバ関数

 UserResource (RealmModel realm, UserModel user, AdminPermissionEvaluator auth, AdminEventBuilder adminEvent)
 
Response updateUser (final UserRepresentation rep)
 
UserRepresentation getUser ()
 
Map< String, Object > impersonate ()
 
List< UserSessionRepresentation > getSessions ()
 
List< UserSessionRepresentation > getOfflineSessions (final @PathParam("clientId") String clientId)
 
List< FederatedIdentityRepresentation > getFederatedIdentity ()
 
Response addFederatedIdentity (final @PathParam("provider") String provider, FederatedIdentityRepresentation rep)
 
void removeFederatedIdentity (final @PathParam("provider") String provider)
 
List< Map< String, Object > > getConsents ()
 
void revokeConsent (final @PathParam("client") String clientId)
 
void logout ()
 
Response deleteUser ()
 
RoleMapperResource getRoleMappings ()
 
void disableCredentialType (List< String > credentialTypes)
 
void resetPassword (CredentialRepresentation pass)
 
void removeTotp ()
 
Response resetPasswordEmail (@QueryParam(OIDCLoginProtocol.REDIRECT_URI_PARAM) String redirectUri, @QueryParam(OIDCLoginProtocol.CLIENT_ID_PARAM) String clientId)
 
Response executeActionsEmail (@QueryParam(OIDCLoginProtocol.REDIRECT_URI_PARAM) String redirectUri, @QueryParam(OIDCLoginProtocol.CLIENT_ID_PARAM) String clientId, @QueryParam("lifespan") Integer lifespan, List< String > actions)
 
Response sendVerifyEmail (@QueryParam(OIDCLoginProtocol.REDIRECT_URI_PARAM) String redirectUri, @QueryParam(OIDCLoginProtocol.CLIENT_ID_PARAM) String clientId)
 
List< GroupRepresentation > groupMembership ()
 
void removeMembership (@PathParam("groupId") String groupId)
 
void joinGroup (@PathParam("groupId") String groupId)
 

静的公開メンバ関数

static void updateUserFromRep (UserModel user, UserRepresentation rep, Set< String > attrsToRemove, RealmModel realm, KeycloakSession session, boolean removeMissingRequiredActions)
 

限定公開変数類

RealmModel realm
 
ClientConnection clientConnection
 
KeycloakSession session
 
HttpHeaders headers
 

非公開メンバ関数

List< FederatedIdentityRepresentation > getFederatedIdentities (UserModel user)
 

非公開変数類

AdminPermissionEvaluator auth
 
AdminEventBuilder adminEvent
 
UserModel user
 

静的非公開変数類

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

詳解

Base resource for managing users

Users

著者
Bill Burke
バージョン
Revision
1

構築子と解体子

◆ UserResource()

org.keycloak.services.resources.admin.UserResource.UserResource ( RealmModel  realm,
UserModel  user,
AdminPermissionEvaluator  auth,
AdminEventBuilder  adminEvent 
)
inline
133  {
134  this.auth = auth;
135  this.realm = realm;
136  this.user = user;
137  this.adminEvent = adminEvent.resource(ResourceType.USER);
138  }
RealmModel realm
Definition: UserResource.java:117
AdminEventBuilder resource(ResourceType resourceType)
Definition: AdminEventBuilder.java:118
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminPermissionEvaluator auth
Definition: UserResource.java:119

関数詳解

◆ addFederatedIdentity()

Response org.keycloak.services.resources.admin.UserResource.addFederatedIdentity ( final @PathParam("provider") String  provider,
FederatedIdentityRepresentation  rep 
)
inline

Add a social login provider to the user

引数
providerSocial login provider id
rep
戻り値
393  {
395  if (session.users().getFederatedIdentity(user, provider, realm) != null) {
396  return ErrorResponse.exists("User is already linked with provider");
397  }
398 
399  FederatedIdentityModel socialLink = new FederatedIdentityModel(provider, rep.getUserId(), rep.getUserName());
400  session.users().addFederatedIdentity(realm, user, socialLink);
401  adminEvent.operation(OperationType.CREATE).resourcePath(session.getContext().getUri()).representation(rep).success();
402  return Response.noContent().build();
403  }
RealmModel realm
Definition: UserResource.java:117
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
void success()
Definition: AdminEventBuilder.java:226
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ deleteUser()

Response org.keycloak.services.resources.admin.UserResource.deleteUser ( )
inline

Delete the user

522  {
524 
525  boolean removed = new UserManager(session).removeUser(realm, user);
526  if (removed) {
527  adminEvent.operation(OperationType.DELETE).resourcePath(session.getContext().getUri()).success();
528  return Response.noContent().build();
529  } else {
530  return ErrorResponse.error("User couldn't be deleted", Status.BAD_REQUEST);
531  }
532  }
RealmModel realm
Definition: UserResource.java:117
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ disableCredentialType()

void org.keycloak.services.resources.admin.UserResource.disableCredentialType ( List< String >  credentialTypes)
inline

Disable all credentials for a user of a specific type

引数
credentialTypes
552  {
554  if (credentialTypes == null) return;
555  for (String type : credentialTypes) {
556  session.userCredentialManager().disableCredentialType(realm, user, type);
557 
558  }
559 
560 
561  }
RealmModel realm
Definition: UserResource.java:117
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ executeActionsEmail()

Response org.keycloak.services.resources.admin.UserResource.executeActionsEmail ( @QueryParam(OIDCLoginProtocol.REDIRECT_URI_PARAM) String  redirectUri,
@QueryParam(OIDCLoginProtocol.CLIENT_ID_PARAM) String  clientId,
@QueryParam("lifespan") Integer  lifespan,
List< String >  actions 
)
inline

Send a update account email to the user

An email contains a link the user can click to perform a set of required actions. The redirectUri and clientId parameters are optional. If no redirect is given, then there will be no link back to click after actions have completed. Redirect uri must be a valid uri for the particular clientId.

引数
redirectUriRedirect uri
clientIdClient id
lifespanNumber of seconds after which the generated token expires
actionsrequired actions the user needs to complete
戻り値
657  {
659 
660  if (user.getEmail() == null) {
661  return ErrorResponse.error("User email missing", Status.BAD_REQUEST);
662  }
663 
664  if (!user.isEnabled()) {
665  throw new WebApplicationException(
666  ErrorResponse.error("User is disabled", Status.BAD_REQUEST));
667  }
668 
669  if (redirectUri != null && clientId == null) {
670  throw new WebApplicationException(
671  ErrorResponse.error("Client id missing", Status.BAD_REQUEST));
672  }
673 
674  if (clientId == null) {
675  clientId = Constants.ACCOUNT_MANAGEMENT_CLIENT_ID;
676  }
677 
678  ClientModel client = realm.getClientByClientId(clientId);
679  if (client == null || !client.isEnabled()) {
680  throw new WebApplicationException(
681  ErrorResponse.error(clientId + " not enabled", Status.BAD_REQUEST));
682  }
683 
684  String redirect;
685  if (redirectUri != null) {
686  redirect = RedirectUtils.verifyRedirectUri(session.getContext().getUri(), redirectUri, realm, client);
687  if (redirect == null) {
688  throw new WebApplicationException(
689  ErrorResponse.error("Invalid redirect uri.", Status.BAD_REQUEST));
690  }
691  }
692 
693  if (lifespan == null) {
694  lifespan = realm.getActionTokenGeneratedByAdminLifespan();
695  }
696  int expiration = Time.currentTime() + lifespan;
697  ExecuteActionsActionToken token = new ExecuteActionsActionToken(user.getId(), expiration, actions, redirectUri, clientId);
698 
699  try {
700  UriBuilder builder = LoginActionsService.actionTokenProcessor(session.getContext().getUri());
701  builder.queryParam("key", token.serialize(session, realm, session.getContext().getUri()));
702 
703  String link = builder.build(realm.getName()).toString();
704 
705  this.session.getProvider(EmailTemplateProvider.class)
706  .setAttribute(Constants.TEMPLATE_ATTR_REQUIRED_ACTIONS, token.getRequiredActions())
707  .setRealm(realm)
708  .setUser(user)
709  .sendExecuteActions(link, TimeUnit.SECONDS.toMinutes(lifespan));
710 
711  //audit.user(user).detail(Details.EMAIL, user.getEmail()).detail(Details.CODE_ID, accessCode.getCodeId()).success();
712 
713  adminEvent.operation(OperationType.ACTION).resourcePath(session.getContext().getUri()).success();
714 
715  return Response.ok().build();
716  } catch (EmailException e) {
717  ServicesLogger.LOGGER.failedToSendActionsEmail(e);
718  return ErrorResponse.error("Failed to send execute actions email", Status.INTERNAL_SERVER_ERROR);
719  }
720  }
RealmModel realm
Definition: UserResource.java:117
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ getConsents()

List<Map<String, Object> > org.keycloak.services.resources.admin.UserResource.getConsents ( )
inline

Get consents granted by the user

戻り値
430  {
432  List<Map<String, Object>> result = new LinkedList<>();
433 
434  Set<ClientModel> offlineClients = new UserSessionManager(session).findClientsWithOfflineToken(realm, user);
435 
436  for (ClientModel client : realm.getClients()) {
437  UserConsentModel consent = session.users().getConsentByClient(realm, user.getId(), client.getId());
438  boolean hasOfflineToken = offlineClients.contains(client);
439 
440  if (consent == null && !hasOfflineToken) {
441  continue;
442  }
443 
444  UserConsentRepresentation rep = (consent == null) ? null : ModelToRepresentation.toRepresentation(consent);
445 
446  Map<String, Object> currentRep = new HashMap<>();
447  currentRep.put("clientId", client.getClientId());
448  currentRep.put("grantedClientScopes", (rep==null ? Collections.emptyList() : rep.getGrantedClientScopes()));
449  currentRep.put("createdDate", (rep==null ? null : rep.getCreatedDate()));
450  currentRep.put("lastUpdatedDate", (rep==null ? null : rep.getLastUpdatedDate()));
451 
452  List<Map<String, String>> additionalGrants = new LinkedList<>();
453  if (hasOfflineToken) {
454  Map<String, String> offlineTokens = new HashMap<>();
455  offlineTokens.put("client", client.getId());
456  // TODO: translate
457  offlineTokens.put("key", "Offline Token");
458  additionalGrants.add(offlineTokens);
459  }
460  currentRep.put("additionalGrants", additionalGrants);
461 
462  result.add(currentRep);
463  }
464 
465  return result;
466  }
RealmModel realm
Definition: UserResource.java:117
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ getFederatedIdentities()

List<FederatedIdentityRepresentation> org.keycloak.services.resources.admin.UserResource.getFederatedIdentities ( UserModel  user)
inlineprivate
368  {
369  Set<FederatedIdentityModel> identities = session.users().getFederatedIdentities(user, realm);
370  List<FederatedIdentityRepresentation> result = new ArrayList<FederatedIdentityRepresentation>();
371 
372  for (FederatedIdentityModel identity : identities) {
373  for (IdentityProviderModel identityProviderModel : realm.getIdentityProviders()) {
374  if (identityProviderModel.getAlias().equals(identity.getIdentityProvider())) {
375  FederatedIdentityRepresentation rep = ModelToRepresentation.toRepresentation(identity);
376  result.add(rep);
377  }
378  }
379  }
380  return result;
381  }
RealmModel realm
Definition: UserResource.java:117
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122

◆ getFederatedIdentity()

List<FederatedIdentityRepresentation> org.keycloak.services.resources.admin.UserResource.getFederatedIdentity ( )
inline

Get social logins associated with the user

戻り値
362  {
364 
366  }
UserModel user
Definition: UserResource.java:122
List< FederatedIdentityRepresentation > getFederatedIdentities(UserModel user)
Definition: UserResource.java:368
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ getOfflineSessions()

List<UserSessionRepresentation> org.keycloak.services.resources.admin.UserResource.getOfflineSessions ( final @PathParam("clientId") String  clientId)
inline

Get offline sessions associated with the user and client

戻り値
327  {
329  ClientModel client = realm.getClientById(clientId);
330  if (client == null) {
331  throw new NotFoundException("Client not found");
332  }
333  List<UserSessionModel> sessions = new UserSessionManager(session).findOfflineSessions(realm, user);
334  List<UserSessionRepresentation> reps = new ArrayList<UserSessionRepresentation>();
335  for (UserSessionModel session : sessions) {
336  UserSessionRepresentation rep = ModelToRepresentation.toRepresentation(session);
337 
338  // Update lastSessionRefresh with the timestamp from clientSession
339  AuthenticatedClientSessionModel clientSession = session.getAuthenticatedClientSessionByClient(clientId);
340 
341  // Skip if userSession is not for this client
342  if (clientSession == null) {
343  continue;
344  }
345 
346  rep.setLastAccess(clientSession.getTimestamp());
347 
348  reps.add(rep);
349  }
350  return reps;
351  }
RealmModel realm
Definition: UserResource.java:117
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ getRoleMappings()

RoleMapperResource org.keycloak.services.resources.admin.UserResource.getRoleMappings ( )
inline
535  {
536  AdminPermissionEvaluator.RequirePermissionCheck manageCheck = () -> auth.users().requireMapRoles(user);
537  AdminPermissionEvaluator.RequirePermissionCheck viewCheck = () -> auth.users().requireView(user);
538  RoleMapperResource resource = new RoleMapperResource(realm, auth, user, adminEvent, manageCheck, viewCheck);
539  ResteasyProviderFactory.getInstance().injectProperties(resource);
540  return resource;
541 
542  }
RealmModel realm
Definition: UserResource.java:117
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ getSessions()

List<UserSessionRepresentation> org.keycloak.services.resources.admin.UserResource.getSessions ( )
inline

Get sessions associated with the user

戻り値
307  {
309  List<UserSessionModel> sessions = session.sessions().getUserSessions(realm, user);
310  List<UserSessionRepresentation> reps = new ArrayList<UserSessionRepresentation>();
311  for (UserSessionModel session : sessions) {
312  UserSessionRepresentation rep = ModelToRepresentation.toRepresentation(session);
313  reps.add(rep);
314  }
315  return reps;
316  }
RealmModel realm
Definition: UserResource.java:117
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ getUser()

UserRepresentation org.keycloak.services.resources.admin.UserResource.getUser ( )
inline

Get representation of the user

戻り値
239  {
241 
242  UserRepresentation rep = ModelToRepresentation.toRepresentation(session, realm, user);
243 
244  if (realm.isIdentityFederationEnabled()) {
245  List<FederatedIdentityRepresentation> reps = getFederatedIdentities(user);
246  rep.setFederatedIdentities(reps);
247  }
248 
249  if (session.getProvider(BruteForceProtector.class).isTemporarilyDisabled(session, realm, user)) {
250  rep.setEnabled(false);
251  }
252  rep.setAccess(auth.users().getAccess(user));
253 
254  return rep;
255  }
RealmModel realm
Definition: UserResource.java:117
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
List< FederatedIdentityRepresentation > getFederatedIdentities(UserModel user)
Definition: UserResource.java:368
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ groupMembership()

List<GroupRepresentation> org.keycloak.services.resources.admin.UserResource.groupMembership ( )
inline
746  {
748  List<GroupRepresentation> memberships = new LinkedList<>();
749  for (GroupModel group : user.getGroups()) {
750  memberships.add(ModelToRepresentation.toRepresentation(group, false));
751  }
752  return memberships;
753  }
UserModel user
Definition: UserResource.java:122
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ impersonate()

Map<String, Object> org.keycloak.services.resources.admin.UserResource.impersonate ( )
inline

Impersonate the user

戻り値
266  {
267  ProfileHelper.requireFeature(Profile.Feature.IMPERSONATION);
268 
270  RealmModel authenticatedRealm = auth.adminAuth().getRealm();
271  // if same realm logout before impersonation
272  boolean sameRealm = false;
273  if (authenticatedRealm.getId().equals(realm.getId())) {
274  sameRealm = true;
275  UserSessionModel userSession = session.sessions().getUserSession(authenticatedRealm, auth.adminAuth().getToken().getSessionState());
276  AuthenticationManager.expireIdentityCookie(realm, session.getContext().getUri(), clientConnection);
277  AuthenticationManager.expireRememberMeCookie(realm, session.getContext().getUri(), clientConnection);
278  AuthenticationManager.backchannelLogout(session, authenticatedRealm, userSession, session.getContext().getUri(), clientConnection, headers, true);
279  }
280  EventBuilder event = new EventBuilder(realm, session, clientConnection);
281 
282  UserSessionModel userSession = session.sessions().createUserSession(realm, user, user.getUsername(), clientConnection.getRemoteAddr(), "impersonate", false, null, null);
283  AuthenticationManager.createLoginCookie(session, realm, userSession.getUser(), userSession, session.getContext().getUri(), clientConnection);
284  URI redirect = AccountFormService.accountServiceApplicationPage(session.getContext().getUri()).build(realm.getName());
285  Map<String, Object> result = new HashMap<>();
286  result.put("sameRealm", sameRealm);
287  result.put("redirect", redirect.toString());
288  event.event(EventType.IMPERSONATE)
289  .session(userSession)
290  .user(user)
291  .detail(Details.IMPERSONATOR_REALM,authenticatedRealm.getName())
292  .detail(Details.IMPERSONATOR, auth.adminAuth().getUser().getUsername()).success();
293 
294  return result;
295  }
ClientConnection clientConnection
Definition: UserResource.java:125
UserModel getUser()
Definition: AdminAuth.java:48
HttpHeaders headers
Definition: UserResource.java:131
AccessToken getToken()
Definition: AdminAuth.java:56
RealmModel realm
Definition: UserResource.java:117
RealmModel getRealm()
Definition: AdminAuth.java:44
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ joinGroup()

void org.keycloak.services.resources.admin.UserResource.joinGroup ( @PathParam("groupId") String  groupId)
inline
782  {
784  GroupModel group = session.realms().getGroupById(groupId, realm);
785  if (group == null) {
786  throw new NotFoundException("Group not found");
787  }
789  if (!user.isMemberOf(group)){
790  user.joinGroup(group);
791  adminEvent.operation(OperationType.CREATE).resource(ResourceType.GROUP_MEMBERSHIP).representation(ModelToRepresentation.toRepresentation(group, true)).resourcePath(session.getContext().getUri()).success();
792  }
793  }
RealmModel realm
Definition: UserResource.java:117
AdminEventBuilder resource(ResourceType resourceType)
Definition: AdminEventBuilder.java:118
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminPermissionEvaluator auth
Definition: UserResource.java:119
AdminEventBuilder representation(Object value)
Definition: AdminEventBuilder.java:210

◆ logout()

void org.keycloak.services.resources.admin.UserResource.logout ( )
inline

Remove all user sessions associated with the user

Also send notification to all clients that have an admin URL to invalidate the sessions for the particular user.

505  {
507 
508  session.users().setNotBeforeForUser(realm, user, Time.currentTime());
509 
510  List<UserSessionModel> userSessions = session.sessions().getUserSessions(realm, user);
511  for (UserSessionModel userSession : userSessions) {
512  AuthenticationManager.backchannelLogout(session, realm, userSession, session.getContext().getUri(), clientConnection, headers, true);
513  }
514  adminEvent.operation(OperationType.ACTION).resourcePath(session.getContext().getUri()).success();
515  }
ClientConnection clientConnection
Definition: UserResource.java:125
HttpHeaders headers
Definition: UserResource.java:131
RealmModel realm
Definition: UserResource.java:117
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ removeFederatedIdentity()

void org.keycloak.services.resources.admin.UserResource.removeFederatedIdentity ( final @PathParam("provider") String  provider)
inline

Remove a social login provider from user

引数
providerSocial login provider id
413  {
415  if (!session.users().removeFederatedIdentity(realm, user, provider)) {
416  throw new NotFoundException("Link not found");
417  }
418  adminEvent.operation(OperationType.DELETE).resourcePath(session.getContext().getUri()).success();
419  }
RealmModel realm
Definition: UserResource.java:117
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ removeMembership()

void org.keycloak.services.resources.admin.UserResource.removeMembership ( @PathParam("groupId") String  groupId)
inline
758  {
760 
761  GroupModel group = session.realms().getGroupById(groupId, realm);
762  if (group == null) {
763  throw new NotFoundException("Group not found");
764  }
766 
767  try {
768  if (user.isMemberOf(group)){
769  user.leaveGroup(group);
770  adminEvent.operation(OperationType.DELETE).resource(ResourceType.GROUP_MEMBERSHIP).representation(ModelToRepresentation.toRepresentation(group, true)).resourcePath(session.getContext().getUri()).success();
771  }
772  } catch (ModelException me) {
773  Properties messages = AdminRoot.getMessages(session, realm, auth.adminAuth().getToken().getLocale());
774  throw new ErrorResponseException(me.getMessage(), MessageFormat.format(messages.getProperty(me.getMessage(), me.getMessage()), me.getParameters()),
775  Status.BAD_REQUEST);
776  }
777  }
AccessToken getToken()
Definition: AdminAuth.java:56
RealmModel realm
Definition: UserResource.java:117
AdminEventBuilder resource(ResourceType resourceType)
Definition: AdminEventBuilder.java:118
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminPermissionEvaluator auth
Definition: UserResource.java:119
AdminEventBuilder representation(Object value)
Definition: AdminEventBuilder.java:210

◆ removeTotp()

void org.keycloak.services.resources.admin.UserResource.removeTotp ( )
inline

Remove TOTP from the user

606  {
608 
609  session.userCredentialManager().disableCredentialType(realm, user, CredentialModel.OTP);
610  adminEvent.operation(OperationType.ACTION).resourcePath(session.getContext().getUri()).success();
611  }
RealmModel realm
Definition: UserResource.java:117
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ resetPassword()

void org.keycloak.services.resources.admin.UserResource.resetPassword ( CredentialRepresentation  pass)
inline

Set up a temporary password for the user

User will have to reset the temporary password next time they log in.

引数
passA Temporary password
573  {
575  if (pass == null || pass.getValue() == null || !CredentialRepresentation.PASSWORD.equals(pass.getType())) {
576  throw new BadRequestException("No password provided");
577  }
578  if (Validation.isBlank(pass.getValue())) {
579  throw new BadRequestException("Empty password not allowed");
580  }
581 
582  UserCredentialModel cred = UserCredentialModel.password(pass.getValue(), true);
583  try {
584  session.userCredentialManager().updateCredential(realm, user, cred);
585  } catch (IllegalStateException ise) {
586  throw new BadRequestException("Resetting to N old passwords is not allowed.");
587  } catch (ReadOnlyException mre) {
588  throw new BadRequestException("Can't reset password as account is read only");
589  } catch (ModelException e) {
590  Properties messages = AdminRoot.getMessages(session, realm, auth.adminAuth().getToken().getLocale());
591  throw new ErrorResponseException(e.getMessage(), MessageFormat.format(messages.getProperty(e.getMessage(), e.getMessage()), e.getParameters()),
592  Status.BAD_REQUEST);
593  }
594  if (pass.isTemporary() != null && pass.isTemporary()) user.addRequiredAction(UserModel.RequiredAction.UPDATE_PASSWORD);
595 
596  adminEvent.operation(OperationType.ACTION).resourcePath(session.getContext().getUri()).success();
597  }
AccessToken getToken()
Definition: AdminAuth.java:56
RealmModel realm
Definition: UserResource.java:117
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ resetPasswordEmail()

Response org.keycloak.services.resources.admin.UserResource.resetPasswordEmail ( @QueryParam(OIDCLoginProtocol.REDIRECT_URI_PARAM) String  redirectUri,
@QueryParam(OIDCLoginProtocol.CLIENT_ID_PARAM) String  clientId 
)
inline

Send an email to the user with a link they can click to reset their password. The redirectUri and clientId parameters are optional. The default for the redirect is the account client.

This endpoint has been deprecated. Please use the execute-actions-email passing a list with UPDATE_PASSWORD within it.

引数
redirectUriredirect uri
clientIdclient id
戻り値
630  {
631  List<String> actions = new LinkedList<>();
632  actions.add(UserModel.RequiredAction.UPDATE_PASSWORD.name());
633  return executeActionsEmail(redirectUri, clientId, null, actions);
634  }
Response executeActionsEmail(@QueryParam(OIDCLoginProtocol.REDIRECT_URI_PARAM) String redirectUri, @QueryParam(OIDCLoginProtocol.CLIENT_ID_PARAM) String clientId, @QueryParam("lifespan") Integer lifespan, List< String > actions)
Definition: UserResource.java:654

◆ revokeConsent()

void org.keycloak.services.resources.admin.UserResource.revokeConsent ( final @PathParam("client") String  clientId)
inline

Revoke consent and offline tokens for particular client from user

引数
clientIdClient id
476  {
478 
479  ClientModel client = realm.getClientByClientId(clientId);
480  if (client == null) {
481  throw new NotFoundException("Client not found");
482  }
483  boolean revokedConsent = session.users().revokeConsentForClient(realm, user.getId(), client.getId());
484  boolean revokedOfflineToken = new UserSessionManager(session).revokeOfflineToken(user, client);
485 
486  if (revokedConsent) {
487  // Logout clientSessions for this user and client
488  AuthenticationManager.backchannelLogoutUserFromClient(session, realm, user, client, session.getContext().getUri(), headers);
489  }
490 
491  if (!revokedConsent && !revokedOfflineToken) {
492  throw new NotFoundException("Consent nor offline token not found");
493  }
494  adminEvent.operation(OperationType.ACTION).resourcePath(session.getContext().getUri()).success();
495  }
HttpHeaders headers
Definition: UserResource.java:131
RealmModel realm
Definition: UserResource.java:117
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ sendVerifyEmail()

Response org.keycloak.services.resources.admin.UserResource.sendVerifyEmail ( @QueryParam(OIDCLoginProtocol.REDIRECT_URI_PARAM) String  redirectUri,
@QueryParam(OIDCLoginProtocol.CLIENT_ID_PARAM) String  clientId 
)
inline

Send an email-verification email to the user

An email contains a link the user can click to verify their email address. The redirectUri and clientId parameters are optional. The default for the redirect is the account client.

引数
redirectUriRedirect uri
clientIdClient id
戻り値
736  {
737  List<String> actions = new LinkedList<>();
738  actions.add(UserModel.RequiredAction.VERIFY_EMAIL.name());
739  return executeActionsEmail(redirectUri, clientId, null, actions);
740  }
Response executeActionsEmail(@QueryParam(OIDCLoginProtocol.REDIRECT_URI_PARAM) String redirectUri, @QueryParam(OIDCLoginProtocol.CLIENT_ID_PARAM) String clientId, @QueryParam("lifespan") Integer lifespan, List< String > actions)
Definition: UserResource.java:654

◆ updateUser()

Response org.keycloak.services.resources.admin.UserResource.updateUser ( final UserRepresentation  rep)
inline

Update the user

引数
rep
戻り値
148  {
149 
151  try {
152  Set<String> attrsToRemove;
153  if (rep.getAttributes() != null) {
154  attrsToRemove = new HashSet<>(user.getAttributes().keySet());
155  attrsToRemove.removeAll(rep.getAttributes().keySet());
156  } else {
157  attrsToRemove = Collections.emptySet();
158  }
159 
160  if (rep.isEnabled() != null && rep.isEnabled()) {
161  UserLoginFailureModel failureModel = session.sessions().getUserLoginFailure(realm, user.getId());
162  if (failureModel != null) {
163  failureModel.clearFailures();
164  }
165  }
166 
167  updateUserFromRep(user, rep, attrsToRemove, realm, session, true);
168  RepresentationToModel.createCredentials(rep, session, realm, user, true);
169  adminEvent.operation(OperationType.UPDATE).resourcePath(session.getContext().getUri()).representation(rep).success();
170 
171  if (session.getTransactionManager().isActive()) {
172  session.getTransactionManager().commit();
173  }
174  return Response.noContent().build();
175  } catch (ModelDuplicateException e) {
176  return ErrorResponse.exists("User exists with same username or email");
177  } catch (ReadOnlyException re) {
178  return ErrorResponse.exists("User is read only!");
179  } catch (ModelException me) {
180  logger.warn("Could not update user!", me);
181  return ErrorResponse.exists("Could not update user!");
182  } catch (ForbiddenException fe) {
183  throw fe;
184  } catch (Exception me) { // JPA
185  logger.warn("Could not update user!", me);// may be committed by JTA which can't
186  return ErrorResponse.exists("Could not update user!");
187  }
188  }
static void updateUserFromRep(UserModel user, UserRepresentation rep, Set< String > attrsToRemove, RealmModel realm, KeycloakSession session, boolean removeMissingRequiredActions)
Definition: UserResource.java:190
static final Logger logger
Definition: UserResource.java:115
RealmModel realm
Definition: UserResource.java:117
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122
void success()
Definition: AdminEventBuilder.java:226
AdminEventBuilder adminEvent
Definition: UserResource.java:121
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
AdminPermissionEvaluator auth
Definition: UserResource.java:119

◆ updateUserFromRep()

static void org.keycloak.services.resources.admin.UserResource.updateUserFromRep ( UserModel  user,
UserRepresentation  rep,
Set< String >  attrsToRemove,
RealmModel  realm,
KeycloakSession  session,
boolean  removeMissingRequiredActions 
)
inlinestatic
190  {
191  if (rep.getUsername() != null && realm.isEditUsernameAllowed()) {
192  user.setUsername(rep.getUsername());
193  }
194  if (rep.getEmail() != null) user.setEmail(rep.getEmail());
195  if (rep.getEmail() == "") user.setEmail(null);
196  if (rep.getFirstName() != null) user.setFirstName(rep.getFirstName());
197  if (rep.getLastName() != null) user.setLastName(rep.getLastName());
198 
199  if (rep.isEnabled() != null) user.setEnabled(rep.isEnabled());
200  if (rep.isEmailVerified() != null) user.setEmailVerified(rep.isEmailVerified());
201 
202  if (rep.getFederationLink() != null) user.setFederationLink(rep.getFederationLink());
203 
204  List<String> reqActions = rep.getRequiredActions();
205 
206  if (reqActions != null) {
207  Set<String> allActions = new HashSet<>();
208  for (ProviderFactory factory : session.getKeycloakSessionFactory().getProviderFactories(RequiredActionProvider.class)) {
209  allActions.add(factory.getId());
210  }
211  for (String action : allActions) {
212  if (reqActions.contains(action)) {
213  user.addRequiredAction(action);
214  } else if (removeMissingRequiredActions) {
215  user.removeRequiredAction(action);
216  }
217  }
218  }
219 
220  if (rep.getAttributes() != null) {
221  for (Map.Entry<String, List<String>> attr : rep.getAttributes().entrySet()) {
222  user.setAttribute(attr.getKey(), attr.getValue());
223  }
224 
225  for (String attr : attrsToRemove) {
226  user.removeAttribute(attr);
227  }
228  }
229  }
RealmModel realm
Definition: UserResource.java:117
KeycloakSession session
Definition: UserResource.java:128
UserModel user
Definition: UserResource.java:122

メンバ詳解

◆ adminEvent

AdminEventBuilder org.keycloak.services.resources.admin.UserResource.adminEvent
private

◆ auth

AdminPermissionEvaluator org.keycloak.services.resources.admin.UserResource.auth
private

◆ clientConnection

ClientConnection org.keycloak.services.resources.admin.UserResource.clientConnection
protected

◆ headers

HttpHeaders org.keycloak.services.resources.admin.UserResource.headers
protected

◆ logger

final Logger org.keycloak.services.resources.admin.UserResource.logger = Logger.getLogger(UserResource.class)
staticprivate

◆ realm

RealmModel org.keycloak.services.resources.admin.UserResource.realm
protected

◆ session

KeycloakSession org.keycloak.services.resources.admin.UserResource.session
protected

◆ user

UserModel org.keycloak.services.resources.admin.UserResource.user
private

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