keycloak
公開メンバ関数 | 非公開メンバ関数 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.authentication.requiredactions.VerifyEmail クラス
org.keycloak.authentication.requiredactions.VerifyEmail の継承関係図
Inheritance graph
org.keycloak.authentication.requiredactions.VerifyEmail 連携図
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 ()
 
default boolean isOneTimeAction ()
 
default int order ()
 

非公開メンバ関数

Response sendVerifyEmail (KeycloakSession session, LoginFormsProvider forms, UserModel user, AuthenticationSessionModel authSession, EventBuilder event) throws UriBuilderException, IllegalArgumentException
 

静的非公開変数類

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

詳解

著者
Bill Burke
バージョン
Revision
1

関数詳解

◆ close()

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

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

100  {
101 
102  }

◆ create()

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

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

105  {
106  return this;
107  }

◆ createDisplay()

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

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

111  {
112  if (displayType == null) return this;
113  if (!OAuth2Constants.DISPLAY_CONSOLE.equalsIgnoreCase(displayType)) return null;
114  return ConsoleVerifyEmail.SINGLETON;
115  }
Definition: OAuth2Constants.java:23
String DISPLAY_CONSOLE
Definition: OAuth2Constants.java:119

◆ evaluateTriggers()

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

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

50  {
51  if (context.getRealm().isVerifyEmail() && !context.getUser().isEmailVerified()) {
53  logger.debug("User is required to verify email");
54  }
55  }
Definition: UserModel.java:30
static final Logger logger
Definition: VerifyEmail.java:48
Definition: UserModel.java:123
void addRequiredAction(String action)
VERIFY_EMAIL
Definition: UserModel.java:124

◆ getDisplayText()

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

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

128  {
129  return "Verify Email";
130  }

◆ getId()

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

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

134  {
135  return UserModel.RequiredAction.VERIFY_EMAIL.name();
136  }
Definition: UserModel.java:30
Definition: UserModel.java:123
VERIFY_EMAIL
Definition: UserModel.java:124

◆ init()

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

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

118  {
119 
120  }

◆ isOneTimeAction()

default boolean org.keycloak.authentication.RequiredActionFactory.isOneTimeAction ( )
inlineinherited

Flag indicating whether the execution of the required action by the same circumstances (e.g. by one and the same action token) should only be permitted once.

戻り値

org.keycloak.authentication.requiredactions.UpdatePassword, org.keycloak.authentication.requiredactions.UpdateTotpで実装されています。

44  {
45  return false;
46  }

◆ order()

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

◆ postInit()

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

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

123  {
124 
125  }

◆ processAction()

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

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

89  {
90  logger.debugf("Re-sending email requested for user: %s", context.getUser().getUsername());
91 
92  // This will allow user to re-send email again
94 
95  requiredActionChallenge(context);
96  }
String VERIFY_EMAIL_KEY
Definition: Constants.java:57
static final Logger logger
Definition: VerifyEmail.java:48
AuthenticationSessionModel getAuthenticationSession()
void requiredActionChallenge(RequiredActionContext context)
Definition: VerifyEmail.java:57
Definition: Constants.java:29

◆ requiredActionChallenge()

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

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

57  {
59 
60  if (context.getUser().isEmailVerified()) {
61  context.success();
63  return;
64  }
65 
66  String email = context.getUser().getEmail();
67  if (Validation.isBlank(email)) {
68  context.ignore();
69  return;
70  }
71 
72  LoginFormsProvider loginFormsProvider = context.form();
73  Response challenge;
74 
75  // Do not allow resending e-mail by simple page refresh, i.e. when e-mail sent, it should be resent properly via email-verification endpoint
76  if (! Objects.equals(authSession.getAuthNote(Constants.VERIFY_EMAIL_KEY), email)) {
77  authSession.setAuthNote(Constants.VERIFY_EMAIL_KEY, email);
78  EventBuilder event = context.getEvent().clone().event(EventType.SEND_VERIFY_EMAIL).detail(Details.EMAIL, email);
79  challenge = sendVerifyEmail(context.getSession(), loginFormsProvider, context.getUser(), context.getAuthenticationSession(), event);
80  } else {
81  challenge = loginFormsProvider.createResponse(UserModel.RequiredAction.VERIFY_EMAIL);
82  }
83 
84  context.challenge(challenge);
85  }
Definition: UserModel.java:30
Response sendVerifyEmail(KeycloakSession session, LoginFormsProvider forms, UserModel user, AuthenticationSessionModel authSession, EventBuilder event)
Definition: VerifyEmail.java:138
String VERIFY_EMAIL_KEY
Definition: Constants.java:57
Definition: LoginFormsProvider.java:36
void setAuthNote(String name, String value)
AuthenticationSessionModel getAuthenticationSession()
Definition: UserModel.java:123
EventBuilder clone()
Definition: EventBuilder.java:172
Response createResponse(UserModel.RequiredAction action)
String EMAIL
Definition: Details.java:25
Event event
Definition: EventBuilder.java:44
Definition: AuthenticationSessionModel.java:33
VERIFY_EMAIL
Definition: UserModel.java:124
Definition: EventBuilder.java:37
Definition: Constants.java:29
Definition: Details.java:23

◆ sendVerifyEmail()

Response org.keycloak.authentication.requiredactions.VerifyEmail.sendVerifyEmail ( KeycloakSession  session,
LoginFormsProvider  forms,
UserModel  user,
AuthenticationSessionModel  authSession,
EventBuilder  event 
) throws UriBuilderException, IllegalArgumentException
inlineprivate
138  {
139  RealmModel realm = session.getContext().getRealm();
140  UriInfo uriInfo = session.getContext().getUri();
141 
142  int validityInSecs = realm.getActionTokenGeneratedByUserLifespan(VerifyEmailActionToken.TOKEN_TYPE);
143  int absoluteExpirationInSecs = Time.currentTime() + validityInSecs;
144 
145  String authSessionEncodedId = AuthenticationSessionCompoundId.fromAuthSession(authSession).getEncodedId();
146  VerifyEmailActionToken token = new VerifyEmailActionToken(user.getId(), absoluteExpirationInSecs, authSessionEncodedId, user.getEmail(), authSession.getClient().getClientId());
147  UriBuilder builder = Urls.actionTokenBuilder(uriInfo.getBaseUri(), token.serialize(session, realm, uriInfo),
148  authSession.getClient().getClientId(), authSession.getTabId());
149  String link = builder.build(realm.getName()).toString();
150  long expirationInMinutes = TimeUnit.SECONDS.toMinutes(validityInSecs);
151 
152  try {
153  session
154  .getProvider(EmailTemplateProvider.class)
155  .setAuthenticationSession(authSession)
156  .setRealm(realm)
157  .setUser(user)
158  .sendVerifyEmail(link, expirationInMinutes);
159  event.success();
160  } catch (EmailException e) {
161  logger.error("Failed to send verification email", e);
162  event.error(Errors.EMAIL_SEND_FAILED);
163  }
164 
166  }
Definition: UserModel.java:30
static int currentTime()
Definition: Time.java:33
static final Logger logger
Definition: VerifyEmail.java:48
Definition: UserModel.java:123
< T extends Provider > T getProvider(Class< T > clazz)
Response createResponse(UserModel.RequiredAction action)
Definition: Errors.java:23
String EMAIL_SEND_FAILED
Definition: Errors.java:74
VERIFY_EMAIL
Definition: UserModel.java:124
Definition: Time.java:25
Definition: RealmModel.java:34

メンバ詳解

◆ logger

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

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