keycloak-service
公開メンバ関数 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.authentication.requiredactions.UpdatePassword クラス
org.keycloak.authentication.requiredactions.UpdatePassword の継承関係図
Inheritance graph
org.keycloak.authentication.requiredactions.UpdatePassword 連携図
Collaboration graph

公開メンバ関数

void evaluateTriggers (RequiredActionContext context)
 
void requiredActionChallenge (RequiredActionContext context)
 
void processAction (RequiredActionContext context)
 
void close ()
 
RequiredActionProvider create (KeycloakSession session)
 
RequiredActionProvider createDisplay (KeycloakSession session, String displayType)
 
void init (Config.Scope config)
 
void postInit (KeycloakSessionFactory factory)
 
String getDisplayText ()
 
String getId ()
 
boolean isOneTimeAction ()
 

静的非公開変数類

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

詳解

著者
Bill Burke
バージョン
Revision
1

関数詳解

◆ close()

void org.keycloak.authentication.requiredactions.UpdatePassword.close ( )
inline
135  {
136 
137  }

◆ create()

RequiredActionProvider org.keycloak.authentication.requiredactions.UpdatePassword.create ( KeycloakSession  session)
inline
140  {
141  return this;
142  }

◆ createDisplay()

RequiredActionProvider org.keycloak.authentication.requiredactions.UpdatePassword.createDisplay ( KeycloakSession  session,
String  displayType 
)
inline
146  {
147  if (displayType == null) return this;
148  if (!OAuth2Constants.DISPLAY_CONSOLE.equalsIgnoreCase(displayType)) return null;
149  return ConsoleUpdatePassword.SINGLETON;
150  }

◆ evaluateTriggers()

void org.keycloak.authentication.requiredactions.UpdatePassword.evaluateTriggers ( RequiredActionContext  context)
inline
52  {
53  int daysToExpirePassword = context.getRealm().getPasswordPolicy().getDaysToExpirePassword();
54  if(daysToExpirePassword != -1) {
55  PasswordCredentialProvider passwordProvider = (PasswordCredentialProvider)context.getSession().getProvider(CredentialProvider.class, PasswordCredentialProviderFactory.PROVIDER_ID);
56  CredentialModel password = passwordProvider.getPassword(context.getRealm(), context.getUser());
57  if (password != null) {
58  if(password.getCreatedDate() == null) {
59  context.getUser().addRequiredAction(UserModel.RequiredAction.UPDATE_PASSWORD);
60  logger.debug("User is required to update password");
61  } else {
62  long timeElapsed = Time.toMillis(Time.currentTime()) - password.getCreatedDate();
63  long timeToExpire = TimeUnit.DAYS.toMillis(daysToExpirePassword);
64 
65  if(timeElapsed > timeToExpire) {
66  context.getUser().addRequiredAction(UserModel.RequiredAction.UPDATE_PASSWORD);
67  logger.debug("User is required to update password");
68  }
69  }
70  }
71  }
72  }
static final Logger logger
Definition: UpdatePassword.java:50

◆ getDisplayText()

String org.keycloak.authentication.requiredactions.UpdatePassword.getDisplayText ( )
inline
164  {
165  return "Update Password";
166  }

◆ getId()

String org.keycloak.authentication.requiredactions.UpdatePassword.getId ( )
inline
170  {
171  return UserModel.RequiredAction.UPDATE_PASSWORD.name();
172  }

◆ init()

void org.keycloak.authentication.requiredactions.UpdatePassword.init ( Config.Scope  config)
inline
154  {
155 
156  }

◆ isOneTimeAction()

boolean org.keycloak.authentication.requiredactions.UpdatePassword.isOneTimeAction ( )
inline
175  {
176  return true;
177  }

◆ postInit()

void org.keycloak.authentication.requiredactions.UpdatePassword.postInit ( KeycloakSessionFactory  factory)
inline
159  {
160 
161  }

◆ processAction()

void org.keycloak.authentication.requiredactions.UpdatePassword.processAction ( RequiredActionContext  context)
inline
83  {
84  EventBuilder event = context.getEvent();
85  MultivaluedMap<String, String> formData = context.getHttpRequest().getDecodedFormParameters();
86  event.event(EventType.UPDATE_PASSWORD);
87  String passwordNew = formData.getFirst("password-new");
88  String passwordConfirm = formData.getFirst("password-confirm");
89 
90  EventBuilder errorEvent = event.clone().event(EventType.UPDATE_PASSWORD_ERROR)
91  .client(context.getAuthenticationSession().getClient())
92  .user(context.getAuthenticationSession().getAuthenticatedUser());
93 
94  if (Validation.isBlank(passwordNew)) {
95  Response challenge = context.form()
96  .setAttribute("username", context.getAuthenticationSession().getAuthenticatedUser().getUsername())
97  .setError(Messages.MISSING_PASSWORD)
98  .createResponse(UserModel.RequiredAction.UPDATE_PASSWORD);
99  context.challenge(challenge);
100  errorEvent.error(Errors.PASSWORD_MISSING);
101  return;
102  } else if (!passwordNew.equals(passwordConfirm)) {
103  Response challenge = context.form()
104  .setAttribute("username", context.getAuthenticationSession().getAuthenticatedUser().getUsername())
105  .setError(Messages.NOTMATCH_PASSWORD)
106  .createResponse(UserModel.RequiredAction.UPDATE_PASSWORD);
107  context.challenge(challenge);
108  errorEvent.error(Errors.PASSWORD_CONFIRM_ERROR);
109  return;
110  }
111 
112  try {
113  context.getSession().userCredentialManager().updateCredential(context.getRealm(), context.getUser(), UserCredentialModel.password(passwordNew, false));
114  context.success();
115  } catch (ModelException me) {
116  errorEvent.detail(Details.REASON, me.getMessage()).error(Errors.PASSWORD_REJECTED);
117  Response challenge = context.form()
118  .setAttribute("username", context.getAuthenticationSession().getAuthenticatedUser().getUsername())
119  .setError(me.getMessage(), me.getParameters())
120  .createResponse(UserModel.RequiredAction.UPDATE_PASSWORD);
121  context.challenge(challenge);
122  return;
123  } catch (Exception ape) {
124  errorEvent.detail(Details.REASON, ape.getMessage()).error(Errors.PASSWORD_REJECTED);
125  Response challenge = context.form()
126  .setAttribute("username", context.getAuthenticationSession().getAuthenticatedUser().getUsername())
127  .setError(ape.getMessage())
128  .createResponse(UserModel.RequiredAction.UPDATE_PASSWORD);
129  context.challenge(challenge);
130  return;
131  }
132  }
Definition: Messages.java:22
static final String NOTMATCH_PASSWORD
Definition: Messages.java:55
static final String MISSING_PASSWORD
Definition: Messages.java:51

◆ requiredActionChallenge()

void org.keycloak.authentication.requiredactions.UpdatePassword.requiredActionChallenge ( RequiredActionContext  context)
inline
75  {
76  Response challenge = context.form()
77  .setAttribute("username", context.getAuthenticationSession().getAuthenticatedUser().getUsername())
78  .createResponse(UserModel.RequiredAction.UPDATE_PASSWORD);
79  context.challenge(challenge);
80  }

メンバ詳解

◆ logger

final Logger org.keycloak.authentication.requiredactions.UpdatePassword.logger = Logger.getLogger(UpdatePassword.class)
staticprivate

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