keycloak
公開メンバ関数 | 静的公開メンバ関数 | 限定公開変数類 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
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< UserSessionRepresentationgetSessions ()
 
List< UserSessionRepresentationgetOfflineSessions (final @PathParam("clientId") String clientId)
 
List< FederatedIdentityRepresentationgetFederatedIdentity ()
 
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< GroupRepresentationgroupMembership ()
 
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< FederatedIdentityRepresentationgetFederatedIdentities (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  }
AdminEventBuilder resource(ResourceType resourceType)
Definition: AdminEventBuilder.java:118
RealmModel realm
Definition: UserResource.java:117
AdminPermissionEvaluator auth
Definition: UserResource.java:119
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121

関数詳解

◆ 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  }
KeycloakSession session
Definition: UserResource.java:128
FederatedIdentityModel getFederatedIdentity(UserModel user, String socialProvider, RealmModel realm)
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
RealmModel realm
Definition: UserResource.java:117
void addFederatedIdentity(RealmModel realm, UserModel user, FederatedIdentityModel socialLink)
AdminPermissionEvaluator auth
Definition: UserResource.java:119
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
void success()
Definition: AdminEventBuilder.java:226
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121

◆ 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  }
KeycloakSession session
Definition: UserResource.java:128
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
RealmModel realm
Definition: UserResource.java:117
AdminPermissionEvaluator auth
Definition: UserResource.java:119
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121

◆ 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) {
557 
558  }
559 
560 
561  }
KeycloakSession session
Definition: UserResource.java:128
UserCredentialManager userCredentialManager()
RealmModel realm
Definition: UserResource.java:117
AdminPermissionEvaluator auth
Definition: UserResource.java:119
void disableCredentialType(RealmModel realm, UserModel user, String credentialType)
UserModel user
Definition: UserResource.java:122

◆ 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  }
ClientModel getClientByClientId(String clientId)
KeycloakSession session
Definition: UserResource.java:128
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
RealmModel realm
Definition: UserResource.java:117
AdminPermissionEvaluator auth
Definition: UserResource.java:119
< T extends Provider > T getProvider(Class< T > clazz)
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121

◆ 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  }
KeycloakSession session
Definition: UserResource.java:128
RealmModel realm
Definition: UserResource.java:117
AdminPermissionEvaluator auth
Definition: UserResource.java:119
UserConsentModel getConsentByClient(RealmModel realm, String userId, String clientInternalId)
UserModel user
Definition: UserResource.java:122
List< ClientModel > getClients()

◆ 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  }
KeycloakSession session
Definition: UserResource.java:128
Set< FederatedIdentityModel > getFederatedIdentities(UserModel user, RealmModel realm)
RealmModel realm
Definition: UserResource.java:117
List< IdentityProviderModel > getIdentityProviders()
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  }
List< FederatedIdentityRepresentation > getFederatedIdentities(UserModel user)
Definition: UserResource.java:368
AdminPermissionEvaluator auth
Definition: UserResource.java:119
UserModel user
Definition: UserResource.java:122

◆ 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  }
KeycloakSession session
Definition: UserResource.java:128
RealmModel realm
Definition: UserResource.java:117
AdminPermissionEvaluator auth
Definition: UserResource.java:119
ClientModel getClientById(String id)
UserModel user
Definition: UserResource.java:122

◆ 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
AdminPermissionEvaluator auth
Definition: UserResource.java:119
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121

◆ 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  }
KeycloakSession session
Definition: UserResource.java:128
RealmModel realm
Definition: UserResource.java:117
AdminPermissionEvaluator auth
Definition: UserResource.java:119
List< UserSessionModel > getUserSessions(RealmModel realm, UserModel user)
UserSessionProvider sessions()
UserModel user
Definition: UserResource.java:122

◆ 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 
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  }
KeycloakSession session
Definition: UserResource.java:128
List< FederatedIdentityRepresentation > getFederatedIdentities(UserModel user)
Definition: UserResource.java:368
RealmModel realm
Definition: UserResource.java:117
AdminPermissionEvaluator auth
Definition: UserResource.java:119
< T extends Provider > T getProvider(Class< T > clazz)
UserModel user
Definition: UserResource.java:122

◆ 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  }
AdminPermissionEvaluator auth
Definition: UserResource.java:119
Set< GroupModel > getGroups()
UserModel user
Definition: UserResource.java:122

◆ 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  }
String getSessionState()
Definition: IDToken.java:160
KeycloakSession session
Definition: UserResource.java:128
UserSessionModel createUserSession(RealmModel realm, UserModel user, String loginUsername, String ipAddress, String authMethod, boolean rememberMe, String brokerSessionId, String brokerUserId)
RealmModel realm
Definition: UserResource.java:117
UserModel getUser()
Definition: AdminAuth.java:48
HttpHeaders headers
Definition: UserResource.java:131
UserSessionModel getUserSession(RealmModel realm, String id)
AdminPermissionEvaluator auth
Definition: UserResource.java:119
AccessToken getToken()
Definition: AdminAuth.java:56
UserSessionProvider sessions()
RealmModel getRealm()
Definition: AdminAuth.java:44
ClientConnection clientConnection
Definition: UserResource.java:125
UserModel user
Definition: UserResource.java:122

◆ 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  }
AdminEventBuilder resource(ResourceType resourceType)
Definition: AdminEventBuilder.java:118
KeycloakSession session
Definition: UserResource.java:128
RealmModel realm
Definition: UserResource.java:117
GroupModel getGroupById(String id, RealmModel realm)
AdminPermissionEvaluator auth
Definition: UserResource.java:119
void joinGroup(GroupModel group)
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
boolean isMemberOf(GroupModel group)
AdminEventBuilder representation(Object value)
Definition: AdminEventBuilder.java:210
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121

◆ 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  }
KeycloakSession session
Definition: UserResource.java:128
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
void setNotBeforeForUser(RealmModel realm, UserModel user, int notBefore)
RealmModel realm
Definition: UserResource.java:117
HttpHeaders headers
Definition: UserResource.java:131
AdminPermissionEvaluator auth
Definition: UserResource.java:119
List< UserSessionModel > getUserSessions(RealmModel realm, UserModel user)
UserSessionProvider sessions()
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
ClientConnection clientConnection
Definition: UserResource.java:125
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121

◆ 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  }
KeycloakSession session
Definition: UserResource.java:128
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
boolean removeFederatedIdentity(RealmModel realm, UserModel user, String socialProvider)
RealmModel realm
Definition: UserResource.java:117
AdminPermissionEvaluator auth
Definition: UserResource.java:119
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121

◆ 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  }
AdminEventBuilder resource(ResourceType resourceType)
Definition: AdminEventBuilder.java:118
KeycloakSession session
Definition: UserResource.java:128
RealmModel realm
Definition: UserResource.java:117
GroupModel getGroupById(String id, RealmModel realm)
AdminPermissionEvaluator auth
Definition: UserResource.java:119
AccessToken getToken()
Definition: AdminAuth.java:56
String getLocale()
Definition: IDToken.java:296
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
boolean isMemberOf(GroupModel group)
AdminEventBuilder representation(Object value)
Definition: AdminEventBuilder.java:210
void leaveGroup(GroupModel group)
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121

◆ removeTotp()

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

Remove TOTP from the user

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

◆ 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 {
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  }
KeycloakSession session
Definition: UserResource.java:128
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
UserCredentialManager userCredentialManager()
RealmModel realm
Definition: UserResource.java:117
AdminPermissionEvaluator auth
Definition: UserResource.java:119
AccessToken getToken()
Definition: AdminAuth.java:56
void updateCredential(RealmModel realm, UserModel user, CredentialInput input)
String getLocale()
Definition: IDToken.java:296
void addRequiredAction(String action)
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121

◆ 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  }
ClientModel getClientByClientId(String clientId)
KeycloakSession session
Definition: UserResource.java:128
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
boolean revokeConsentForClient(RealmModel realm, String userId, String clientInternalId)
RealmModel realm
Definition: UserResource.java:117
HttpHeaders headers
Definition: UserResource.java:131
AdminPermissionEvaluator auth
Definition: UserResource.java:119
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121

◆ 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 
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  }
KeycloakSession session
Definition: UserResource.java:128
AdminEventBuilder resourcePath(String... pathElements)
Definition: AdminEventBuilder.java:171
KeycloakTransactionManager getTransactionManager()
static void updateUserFromRep(UserModel user, UserRepresentation rep, Set< String > attrsToRemove, RealmModel realm, KeycloakSession session, boolean removeMissingRequiredActions)
Definition: UserResource.java:190
RealmModel realm
Definition: UserResource.java:117
Map< String, List< String > > getAttributes()
AdminPermissionEvaluator auth
Definition: UserResource.java:119
static final Logger logger
Definition: UserResource.java:115
UserSessionProvider sessions()
AdminEventBuilder operation(OperationType operationType)
Definition: AdminEventBuilder.java:113
UserLoginFailureModel getUserLoginFailure(RealmModel realm, String userId)
void success()
Definition: AdminEventBuilder.java:226
UserModel user
Definition: UserResource.java:122
AdminEventBuilder adminEvent
Definition: UserResource.java:121

◆ 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  }
KeycloakSession session
Definition: UserResource.java:128
List< ProviderFactory > getProviderFactories(Class<? extends Provider > clazz)
KeycloakSessionFactory getKeycloakSessionFactory()
void setEmail(String email)
RealmModel realm
Definition: UserResource.java:117
void removeAttribute(String name)
void setFederationLink(String link)
void addRequiredAction(String action)
void setFirstName(String firstName)
void setUsername(String username)
void setAttribute(String name, List< String > values)
void setEmailVerified(boolean verified)
void removeRequiredAction(String action)
void setEnabled(boolean enabled)
void setLastName(String lastName)
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

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