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

公開メンバ関数

 AccountRestService (KeycloakSession session, Auth auth, ClientModel client, EventBuilder event)
 
void init ()
 
Response preflight ()
 
Response account ()
 
Response updateAccount (UserRepresentation userRep)
 
Response sessions ()
 
Response sessionsLogout (@QueryParam("current") boolean removeCurrent)
 
Response sessionLogout (@QueryParam("id") String id)
 
AccountCredentialResource credentials ()
 

限定公開変数類

HttpHeaders headers
 
ClientConnection clientConnection
 

非公開変数類

HttpRequest request
 
final KeycloakSession session
 
final ClientModel client
 
final EventBuilder event
 
EventStoreProvider eventStore
 
Auth auth
 
final RealmModel realm
 
final UserModel user
 

詳解

著者
Stian Thorgersen

構築子と解体子

◆ AccountRestService()

org.keycloak.services.resources.account.AccountRestService.AccountRestService ( KeycloakSession  session,
Auth  auth,
ClientModel  client,
EventBuilder  event 
)
inline
72  {
73  this.session = session;
74  this.auth = auth;
75  this.realm = auth.getRealm();
76  this.user = auth.getUser();
77  this.client = client;
78  this.event = event;
79  }
final KeycloakSession session
Definition: AccountRestService.java:63
UserModel getUser()
Definition: Auth.java:59
Auth auth
Definition: AccountRestService.java:67
final UserModel user
Definition: AccountRestService.java:70
final EventBuilder event
Definition: AccountRestService.java:65
final ClientModel client
Definition: AccountRestService.java:64
final RealmModel realm
Definition: AccountRestService.java:69
RealmModel getRealm()
Definition: Auth.java:55

関数詳解

◆ account()

Response org.keycloak.services.resources.account.AccountRestService.account ( )
inline

Get account information.

戻り値
106  {
107  auth.requireOneOf(AccountRoles.MANAGE_ACCOUNT, AccountRoles.VIEW_PROFILE);
108 
109  UserModel user = auth.getUser();
110 
111  UserRepresentation rep = new UserRepresentation();
112  rep.setUsername(user.getUsername());
113  rep.setFirstName(user.getFirstName());
114  rep.setLastName(user.getLastName());
115  rep.setEmail(user.getEmail());
116  rep.setEmailVerified(user.isEmailVerified());
117  rep.setAttributes(user.getAttributes());
118 
119  return Cors.add(request, Response.ok(rep)).auth().allowedOrigins(auth.getToken()).build();
120  }
void requireOneOf(String... roles)
Definition: Auth.java:89
AccessToken getToken()
Definition: Auth.java:67
UserModel getUser()
Definition: Auth.java:59
Auth auth
Definition: AccountRestService.java:67
final UserModel user
Definition: AccountRestService.java:70
HttpRequest request
Definition: AccountRestService.java:57

◆ credentials()

AccountCredentialResource org.keycloak.services.resources.account.AccountRestService.credentials ( )
inline
276  {
277  return new AccountCredentialResource(session, event, user);
278  }
final KeycloakSession session
Definition: AccountRestService.java:63
final UserModel user
Definition: AccountRestService.java:70
final EventBuilder event
Definition: AccountRestService.java:65

◆ init()

void org.keycloak.services.resources.account.AccountRestService.init ( )
inline
81  {
82  eventStore = session.getProvider(EventStoreProvider.class);
83  }
final KeycloakSession session
Definition: AccountRestService.java:63
EventStoreProvider eventStore
Definition: AccountRestService.java:66

◆ preflight()

Response org.keycloak.services.resources.account.AccountRestService.preflight ( )
inline

CORS preflight

戻り値
93  {
94  return Cors.add(request, Response.ok()).auth().preflight().build();
95  }
Auth auth
Definition: AccountRestService.java:67
HttpRequest request
Definition: AccountRestService.java:57

◆ sessionLogout()

Response org.keycloak.services.resources.account.AccountRestService.sessionLogout ( @QueryParam("id") String  id)
inline

Remove a specific session

引数
ida specific session to remove
戻り値
267  {
268  UserSessionModel userSession = session.sessions().getUserSession(realm, id);
269  if (userSession != null && userSession.getUser().equals(user)) {
270  AuthenticationManager.backchannelLogout(session, userSession, true);
271  }
272  return Cors.add(request, Response.ok()).auth().allowedOrigins(auth.getToken()).build();
273  }
final KeycloakSession session
Definition: AccountRestService.java:63
AccessToken getToken()
Definition: Auth.java:67
Auth auth
Definition: AccountRestService.java:67
final UserModel user
Definition: AccountRestService.java:70
HttpRequest request
Definition: AccountRestService.java:57
final RealmModel realm
Definition: AccountRestService.java:69

◆ sessions()

Response org.keycloak.services.resources.account.AccountRestService.sessions ( )
inline

Get session information.

戻り値
207  {
208  List<SessionRepresentation> reps = new LinkedList<>();
209 
210  List<UserSessionModel> sessions = session.sessions().getUserSessions(realm, user);
211  for (UserSessionModel s : sessions) {
212  SessionRepresentation rep = new SessionRepresentation();
213  rep.setId(s.getId());
214  rep.setIpAddress(s.getIpAddress());
215  rep.setStarted(s.getStarted());
216  rep.setLastAccess(s.getLastSessionRefresh());
217  rep.setExpires(s.getStarted() + realm.getSsoSessionMaxLifespan());
218  rep.setClients(new LinkedList());
219 
220  for (String clientUUID : s.getAuthenticatedClientSessions().keySet()) {
221  ClientModel client = realm.getClientById(clientUUID);
222  ClientRepresentation clientRep = new ClientRepresentation();
223  clientRep.setClientId(client.getClientId());
224  clientRep.setClientName(client.getName());
225  rep.getClients().add(clientRep);
226  }
227 
228  reps.add(rep);
229  }
230 
231  return Cors.add(request, Response.ok(reps)).auth().allowedOrigins(auth.getToken()).build();
232  }
final KeycloakSession session
Definition: AccountRestService.java:63
AccessToken getToken()
Definition: Auth.java:67
Auth auth
Definition: AccountRestService.java:67
final UserModel user
Definition: AccountRestService.java:70
HttpRequest request
Definition: AccountRestService.java:57
final ClientModel client
Definition: AccountRestService.java:64
Response sessions()
Definition: AccountRestService.java:207
final RealmModel realm
Definition: AccountRestService.java:69

◆ sessionsLogout()

Response org.keycloak.services.resources.account.AccountRestService.sessionsLogout ( @QueryParam("current") boolean  removeCurrent)
inline

Remove sessions

引数
removeCurrentremove current session (default is false)
戻り値
244  {
245  UserSessionModel userSession = auth.getSession();
246 
247  List<UserSessionModel> userSessions = session.sessions().getUserSessions(realm, user);
248  for (UserSessionModel s : userSessions) {
249  if (removeCurrent || !s.getId().equals(userSession.getId())) {
250  AuthenticationManager.backchannelLogout(session, s, true);
251  }
252  }
253 
254  return Cors.add(request, Response.ok()).auth().allowedOrigins(auth.getToken()).build();
255  }
final KeycloakSession session
Definition: AccountRestService.java:63
AccessToken getToken()
Definition: Auth.java:67
Auth auth
Definition: AccountRestService.java:67
final UserModel user
Definition: AccountRestService.java:70
HttpRequest request
Definition: AccountRestService.java:57
UserSessionModel getSession()
Definition: Auth.java:71
final RealmModel realm
Definition: AccountRestService.java:69

◆ updateAccount()

Response org.keycloak.services.resources.account.AccountRestService.updateAccount ( UserRepresentation  userRep)
inline
127  {
128  auth.require(AccountRoles.MANAGE_ACCOUNT);
129 
130  event.event(EventType.UPDATE_PROFILE).client(auth.getClient()).user(user);
131 
132  try {
133  RealmModel realm = session.getContext().getRealm();
134 
135  boolean usernameChanged = userRep.getUsername() != null && !userRep.getUsername().equals(user.getUsername());
136  if (realm.isEditUsernameAllowed()) {
137  if (usernameChanged) {
138  UserModel existing = session.users().getUserByUsername(userRep.getUsername(), realm);
139  if (existing != null) {
140  return ErrorResponse.exists(Messages.USERNAME_EXISTS);
141  }
142 
143  user.setUsername(userRep.getUsername());
144  }
145  } else if (usernameChanged) {
146  return ErrorResponse.error(Messages.READ_ONLY_USERNAME, Response.Status.BAD_REQUEST);
147  }
148 
149  boolean emailChanged = userRep.getEmail() != null && !userRep.getEmail().equals(user.getEmail());
150  if (emailChanged && !realm.isDuplicateEmailsAllowed()) {
151  UserModel existing = session.users().getUserByEmail(userRep.getEmail(), realm);
152  if (existing != null) {
153  return ErrorResponse.exists(Messages.EMAIL_EXISTS);
154  }
155  }
156 
157  if (realm.isRegistrationEmailAsUsername() && !realm.isDuplicateEmailsAllowed()) {
158  UserModel existing = session.users().getUserByUsername(userRep.getEmail(), realm);
159  if (existing != null) {
160  return ErrorResponse.exists(Messages.USERNAME_EXISTS);
161  }
162  }
163 
164  if (emailChanged) {
165  String oldEmail = user.getEmail();
166  user.setEmail(userRep.getEmail());
167  user.setEmailVerified(false);
168  event.clone().event(EventType.UPDATE_EMAIL).detail(Details.PREVIOUS_EMAIL, oldEmail).detail(Details.UPDATED_EMAIL, userRep.getEmail()).success();
169 
170  if (realm.isRegistrationEmailAsUsername()) {
171  user.setUsername(userRep.getEmail());
172  }
173  }
174 
175  user.setFirstName(userRep.getFirstName());
176  user.setLastName(userRep.getLastName());
177 
178  if (userRep.getAttributes() != null) {
179  for (String k : user.getAttributes().keySet()) {
180  if (!userRep.getAttributes().containsKey(k)) {
181  user.removeAttribute(k);
182  }
183  }
184 
185  for (Map.Entry<String, List<String>> e : userRep.getAttributes().entrySet()) {
186  user.setAttribute(e.getKey(), e.getValue());
187  }
188  }
189 
190  event.success();
191 
192  return Cors.add(request, Response.ok()).auth().allowedOrigins(auth.getToken()).build();
193  } catch (ReadOnlyException e) {
194  return ErrorResponse.error(Messages.READ_ONLY_USER, Response.Status.BAD_REQUEST);
195  }
196  }
final KeycloakSession session
Definition: AccountRestService.java:63
ClientModel getClient()
Definition: Auth.java:63
AccessToken getToken()
Definition: Auth.java:67
Auth auth
Definition: AccountRestService.java:67
final UserModel user
Definition: AccountRestService.java:70
HttpRequest request
Definition: AccountRestService.java:57
void require(String role)
Definition: Auth.java:83
final RealmModel realm
Definition: AccountRestService.java:69

メンバ詳解

◆ auth

Auth org.keycloak.services.resources.account.AccountRestService.auth
private

◆ client

final ClientModel org.keycloak.services.resources.account.AccountRestService.client
private

◆ clientConnection

ClientConnection org.keycloak.services.resources.account.AccountRestService.clientConnection
protected

◆ event

final EventBuilder org.keycloak.services.resources.account.AccountRestService.event
private

◆ eventStore

EventStoreProvider org.keycloak.services.resources.account.AccountRestService.eventStore
private

◆ headers

HttpHeaders org.keycloak.services.resources.account.AccountRestService.headers
protected

◆ realm

final RealmModel org.keycloak.services.resources.account.AccountRestService.realm
private

◆ request

HttpRequest org.keycloak.services.resources.account.AccountRestService.request
private

◆ session

final KeycloakSession org.keycloak.services.resources.account.AccountRestService.session
private

◆ user

final UserModel org.keycloak.services.resources.account.AccountRestService.user
private

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