keycloak-oidc-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 ()
 
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  }

◆ 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 final Logger logger
Definition: UpdatePassword.java:50
Definition: UserModel.java:123
int getDaysToExpirePassword()
Definition: PasswordPolicy.java:98
void addRequiredAction(String action)
PasswordPolicy getPasswordPolicy()
< T extends Provider > T getProvider(Class< T > clazz)
UPDATE_PASSWORD
Definition: UserModel.java:124

◆ 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
Definition: UserModel.java:123
UPDATE_PASSWORD
Definition: UserModel.java:124

◆ 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

org.keycloak.urls.HostnameProviderFactory, org.keycloak.protocol.oidc.ext.OIDCExtProviderFactoryで実装されています。

56  {
57  return 0;
58  }

◆ 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  }
Response createResponse(UserModel.RequiredAction action)
Definition: UserModel.java:30
String PASSWORD_REJECTED
Definition: Errors.java:81
Definition: Messages.java:22
Definition: UserModel.java:123
void updateCredential(RealmModel realm, UserModel user, CredentialInput input)
UserCredentialManager userCredentialManager()
String REASON
Definition: Details.java:47
String PASSWORD_MISSING
Definition: Errors.java:80
EventBuilder detail(String key, String value)
Definition: EventBuilder.java:133
Event event
Definition: EventBuilder.java:44
LoginFormsProvider setAttribute(String name, Object value)
Definition: Details.java:23
EventBuilder clone()
Definition: EventBuilder.java:172
static final String NOTMATCH_PASSWORD
Definition: Messages.java:55
AuthenticationSessionModel getAuthenticationSession()
static final String MISSING_PASSWORD
Definition: Messages.java:51
String PASSWORD_CONFIRM_ERROR
Definition: Errors.java:79
Definition: EventBuilder.java:37
Definition: Errors.java:23
UPDATE_PASSWORD
Definition: UserModel.java:124
void error(String error)
Definition: EventBuilder.java:160

◆ 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
Definition: UserModel.java:123
LoginFormsProvider setAttribute(String name, Object value)
AuthenticationSessionModel getAuthenticationSession()
UPDATE_PASSWORD
Definition: UserModel.java:124

メンバ詳解

◆ logger

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

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