keycloak
公開メンバ関数 | 静的非公開変数類 | 全メンバ一覧
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 ()
 
default int order ()
 

静的非公開変数類

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

詳解

著者
Bill Burke
バージョン
Revision
1

関数詳解

◆ close()

void org.keycloak.authentication.requiredactions.UpdatePassword.close ( )
inline

org.keycloak.provider.Providerを実装しています。

135  {
136 
137  }

◆ create()

RequiredActionProvider org.keycloak.authentication.requiredactions.UpdatePassword.create ( KeycloakSession  session)
inline

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

140  {
141  return this;
142  }

◆ createDisplay()

RequiredActionProvider org.keycloak.authentication.requiredactions.UpdatePassword.createDisplay ( KeycloakSession  session,
String  displayType 
)
inline

org.keycloak.authentication.DisplayTypeRequiredActionFactoryを実装しています。

146  {
147  if (displayType == null) return this;
148  if (!OAuth2Constants.DISPLAY_CONSOLE.equalsIgnoreCase(displayType)) return null;
149  return ConsoleUpdatePassword.SINGLETON;
150  }
Definition: OAuth2Constants.java:23
String DISPLAY_CONSOLE
Definition: OAuth2Constants.java:119

◆ evaluateTriggers()

void org.keycloak.authentication.requiredactions.UpdatePassword.evaluateTriggers ( RequiredActionContext  context)
inline

org.keycloak.authentication.RequiredActionProviderを実装しています。

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) {
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) {
67  logger.debug("User is required to update password");
68  }
69  }
70  }
71  }
72  }
Definition: UserModel.java:30
static int currentTime()
Definition: Time.java:33
UPDATE_PASSWORD
Definition: UserModel.java:124
PasswordPolicy getPasswordPolicy()
Definition: UserModel.java:123
void addRequiredAction(String action)
< T extends Provider > T getProvider(Class< T > clazz)
static long toMillis(int time)
Definition: Time.java:68
int getDaysToExpirePassword()
Definition: PasswordPolicy.java:98
static final Logger logger
Definition: UpdatePassword.java:50
Definition: Time.java:25

◆ getDisplayText()

String org.keycloak.authentication.requiredactions.UpdatePassword.getDisplayText ( )
inline

org.keycloak.authentication.RequiredActionFactoryを実装しています。

164  {
165  return "Update Password";
166  }

◆ getId()

String org.keycloak.authentication.requiredactions.UpdatePassword.getId ( )
inline

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

170  {
172  }
Definition: UserModel.java:30
UPDATE_PASSWORD
Definition: UserModel.java:124
Definition: UserModel.java:123

◆ init()

void org.keycloak.authentication.requiredactions.UpdatePassword.init ( Config.Scope  config)
inline

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

154  {
155 
156  }

◆ isOneTimeAction()

boolean org.keycloak.authentication.requiredactions.UpdatePassword.isOneTimeAction ( )
inline

org.keycloak.authentication.RequiredActionFactoryを実装しています。

175  {
176  return true;
177  }

◆ order()

default int org.keycloak.provider.ProviderFactory< T extends Provider >.order ( )
inlineinherited

◆ postInit()

void org.keycloak.authentication.requiredactions.UpdatePassword.postInit ( KeycloakSessionFactory  factory)
inline

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

159  {
160 
161  }

◆ processAction()

void org.keycloak.authentication.requiredactions.UpdatePassword.processAction ( RequiredActionContext  context)
inline

org.keycloak.authentication.RequiredActionProviderを実装しています。

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())
93 
94  if (Validation.isBlank(passwordNew)) {
95  Response challenge = context.form()
97  .setError(Messages.MISSING_PASSWORD)
99  context.challenge(challenge);
100  errorEvent.error(Errors.PASSWORD_MISSING);
101  return;
102  } else if (!passwordNew.equals(passwordConfirm)) {
103  Response challenge = context.form()
105  .setError(Messages.NOTMATCH_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()
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()
127  .setError(ape.getMessage())
128  .createResponse(UserModel.RequiredAction.UPDATE_PASSWORD);
129  context.challenge(challenge);
130  return;
131  }
132  }
Definition: UserModel.java:30
String PASSWORD_MISSING
Definition: Errors.java:80
String REASON
Definition: Details.java:47
static final String NOTMATCH_PASSWORD
Definition: Messages.java:55
UserCredentialManager userCredentialManager()
void error(String error)
Definition: EventBuilder.java:160
AuthenticationSessionModel getAuthenticationSession()
UPDATE_PASSWORD
Definition: UserModel.java:124
String PASSWORD_REJECTED
Definition: Errors.java:81
String PASSWORD_CONFIRM_ERROR
Definition: Errors.java:79
Definition: Messages.java:22
void updateCredential(RealmModel realm, UserModel user, CredentialInput input)
static final String MISSING_PASSWORD
Definition: Messages.java:51
LoginFormsProvider setAttribute(String name, Object value)
Definition: UserModel.java:123
EventBuilder detail(String key, String value)
Definition: EventBuilder.java:133
EventBuilder clone()
Definition: EventBuilder.java:172
Response createResponse(UserModel.RequiredAction action)
Definition: Errors.java:23
Event event
Definition: EventBuilder.java:44
Definition: EventBuilder.java:37
Definition: Details.java:23

◆ requiredActionChallenge()

void org.keycloak.authentication.requiredactions.UpdatePassword.requiredActionChallenge ( RequiredActionContext  context)
inline

org.keycloak.authentication.RequiredActionProviderを実装しています。

75  {
76  Response challenge = context.form()
78  .createResponse(UserModel.RequiredAction.UPDATE_PASSWORD);
79  context.challenge(challenge);
80  }
Definition: UserModel.java:30
AuthenticationSessionModel getAuthenticationSession()
UPDATE_PASSWORD
Definition: UserModel.java:124
LoginFormsProvider setAttribute(String name, Object value)
Definition: UserModel.java:123

メンバ詳解

◆ logger

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

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