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

非公開メンバ関数

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
100  {
101 
102  }

◆ create()

RequiredActionProvider org.keycloak.authentication.requiredactions.VerifyEmail.create ( KeycloakSession  session)
inline
105  {
106  return this;
107  }

◆ createDisplay()

RequiredActionProvider org.keycloak.authentication.requiredactions.VerifyEmail.createDisplay ( KeycloakSession  session,
String  displayType 
)
inline
111  {
112  if (displayType == null) return this;
113  if (!OAuth2Constants.DISPLAY_CONSOLE.equalsIgnoreCase(displayType)) return null;
114  return ConsoleVerifyEmail.SINGLETON;
115  }

◆ evaluateTriggers()

void org.keycloak.authentication.requiredactions.VerifyEmail.evaluateTriggers ( RequiredActionContext  context)
inline
50  {
51  if (context.getRealm().isVerifyEmail() && !context.getUser().isEmailVerified()) {
52  context.getUser().addRequiredAction(UserModel.RequiredAction.VERIFY_EMAIL);
53  logger.debug("User is required to verify email");
54  }
55  }
static final Logger logger
Definition: VerifyEmail.java:48

◆ getDisplayText()

String org.keycloak.authentication.requiredactions.VerifyEmail.getDisplayText ( )
inline
128  {
129  return "Verify Email";
130  }

◆ getId()

String org.keycloak.authentication.requiredactions.VerifyEmail.getId ( )
inline
134  {
135  return UserModel.RequiredAction.VERIFY_EMAIL.name();
136  }

◆ init()

void org.keycloak.authentication.requiredactions.VerifyEmail.init ( Config.Scope  config)
inline
118  {
119 
120  }

◆ postInit()

void org.keycloak.authentication.requiredactions.VerifyEmail.postInit ( KeycloakSessionFactory  factory)
inline
123  {
124 
125  }

◆ processAction()

void org.keycloak.authentication.requiredactions.VerifyEmail.processAction ( RequiredActionContext  context)
inline
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
93  context.getAuthenticationSession().removeAuthNote(Constants.VERIFY_EMAIL_KEY);
94 
95  requiredActionChallenge(context);
96  }
static final Logger logger
Definition: VerifyEmail.java:48
void requiredActionChallenge(RequiredActionContext context)
Definition: VerifyEmail.java:57

◆ requiredActionChallenge()

void org.keycloak.authentication.requiredactions.VerifyEmail.requiredActionChallenge ( RequiredActionContext  context)
inline
57  {
58  AuthenticationSessionModel authSession = context.getAuthenticationSession();
59 
60  if (context.getUser().isEmailVerified()) {
61  context.success();
62  authSession.removeAuthNote(Constants.VERIFY_EMAIL_KEY);
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  }
Response sendVerifyEmail(KeycloakSession session, LoginFormsProvider forms, UserModel user, AuthenticationSessionModel authSession, EventBuilder event)
Definition: VerifyEmail.java:138

◆ 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 
165  return forms.createResponse(UserModel.RequiredAction.VERIFY_EMAIL);
166  }
static final Logger logger
Definition: VerifyEmail.java:48

メンバ詳解

◆ logger

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

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