keycloak-service
公開メンバ関数 | 全メンバ一覧
org.keycloak.authentication.actiontoken.verifyemail.VerifyEmailActionTokenHandler クラス
org.keycloak.authentication.actiontoken.verifyemail.VerifyEmailActionTokenHandler の継承関係図
Inheritance graph
org.keycloak.authentication.actiontoken.verifyemail.VerifyEmailActionTokenHandler 連携図
Collaboration graph

公開メンバ関数

 VerifyEmailActionTokenHandler ()
 
Predicate<? super VerifyEmailActionToken > [] getVerifiers (ActionTokenContext< VerifyEmailActionToken > tokenContext)
 
Response handleToken (VerifyEmailActionToken token, ActionTokenContext< VerifyEmailActionToken > tokenContext)
 
ActionTokenHandler< T > create (KeycloakSession session)
 
void init (Scope config)
 
void postInit (KeycloakSessionFactory factory)
 
String getId ()
 
void close ()
 
Class< T > getTokenClass ()
 
EventType eventType ()
 
String getDefaultErrorMessage ()
 
String getDefaultEventError ()
 
String getAuthenticationSessionIdFromToken (T token, ActionTokenContext< T > tokenContext, AuthenticationSessionModel currentAuthSession)
 
AuthenticationSessionModel startFreshAuthenticationSession (T token, ActionTokenContext< T > tokenContext)
 
boolean canUseTokenRepeatedly (T token, ActionTokenContext< T > tokenContext)
 
Response handleToken (T token, ActionTokenContext< T > tokenContext)
 
default Predicate<? super T > [] getVerifiers (ActionTokenContext< T > tokenContext)
 

詳解

Action token handler for verification of e-mail address.

著者
hmlnarik

構築子と解体子

◆ VerifyEmailActionTokenHandler()

org.keycloak.authentication.actiontoken.verifyemail.VerifyEmailActionTokenHandler.VerifyEmailActionTokenHandler ( )
inline
46  {
47  super(
48  VerifyEmailActionToken.TOKEN_TYPE,
49  VerifyEmailActionToken.class,
50  Messages.STALE_VERIFY_EMAIL_LINK,
51  EventType.VERIFY_EMAIL,
52  Errors.INVALID_TOKEN
53  );
54  }

関数詳解

◆ canUseTokenRepeatedly()

boolean org.keycloak.authentication.actiontoken.AbstractActionTokenHander< T extends JsonWebToken >.canUseTokenRepeatedly ( token,
ActionTokenContext< T >  tokenContext 
)
inlineinherited
102  {
103  return true;
104  }

◆ close()

void org.keycloak.authentication.actiontoken.AbstractActionTokenHander< T extends JsonWebToken >.close ( )
inlineinherited
66  {
67  }

◆ create()

ActionTokenHandler<T> org.keycloak.authentication.actiontoken.AbstractActionTokenHander< T extends JsonWebToken >.create ( KeycloakSession  session)
inlineinherited
48  {
49  return this;
50  }

◆ eventType()

EventType org.keycloak.authentication.actiontoken.AbstractActionTokenHander< T extends JsonWebToken >.eventType ( )
inlineinherited
75  {
76  return this.defaultEventType;
77  }
final EventType defaultEventType
Definition: AbstractActionTokenHander.java:36

◆ getAuthenticationSessionIdFromToken()

String org.keycloak.authentication.actiontoken.AbstractActionTokenHander< T extends JsonWebToken >.getAuthenticationSessionIdFromToken ( token,
ActionTokenContext< T >  tokenContext,
AuthenticationSessionModel  currentAuthSession 
)
inlineinherited
90  {
91  return token instanceof DefaultActionToken ? ((DefaultActionToken) token).getCompoundAuthenticationSessionId() : null;
92  }

◆ getDefaultErrorMessage()

String org.keycloak.authentication.actiontoken.AbstractActionTokenHander< T extends JsonWebToken >.getDefaultErrorMessage ( )
inlineinherited
80  {
81  return this.defaultErrorMessage;
82  }
final String defaultErrorMessage
Definition: AbstractActionTokenHander.java:35

◆ getDefaultEventError()

String org.keycloak.authentication.actiontoken.AbstractActionTokenHander< T extends JsonWebToken >.getDefaultEventError ( )
inlineinherited
85  {
86  return this.defaultEventError;
87  }
final String defaultEventError
Definition: AbstractActionTokenHander.java:37

◆ getId()

String org.keycloak.authentication.actiontoken.AbstractActionTokenHander< T extends JsonWebToken >.getId ( )
inlineinherited
61  {
62  return this.id;
63  }
final String id
Definition: AbstractActionTokenHander.java:33

◆ getTokenClass()

Class<T> org.keycloak.authentication.actiontoken.AbstractActionTokenHander< T extends JsonWebToken >.getTokenClass ( )
inlineinherited
70  {
71  return this.tokenClass;
72  }
final Class< T > tokenClass
Definition: AbstractActionTokenHander.java:34

◆ getVerifiers() [1/2]

Predicate<? super VerifyEmailActionToken> [] org.keycloak.authentication.actiontoken.verifyemail.VerifyEmailActionTokenHandler.getVerifiers ( ActionTokenContext< VerifyEmailActionToken tokenContext)
inline
57  {
58  return TokenUtils.predicates(
60  t -> Objects.equals(t.getEmail(), tokenContext.getAuthenticationSession().getAuthenticatedUser().getEmail()),
61  Errors.INVALID_EMAIL, getDefaultErrorMessage()
62  )
63  );
64  }
AuthenticationSessionModel getAuthenticationSession()
Definition: ActionTokenContext.java:134
static< T extends JsonWebToken > Predicate<? super T > [] predicates(Predicate<? super T >... predicate)
Definition: TokenUtils.java:82
static Predicate< JsonWebToken > checkThat(BooleanSupplier function, String errorEvent, String errorMessage)
Definition: TokenUtils.java:39
String getDefaultErrorMessage()
Definition: AbstractActionTokenHander.java:80

◆ getVerifiers() [2/2]

default Predicate<? super T> [] org.keycloak.authentication.actiontoken.ActionTokenHandler< T extends JsonWebToken >.getVerifiers ( ActionTokenContext< T >  tokenContext)
inlineinherited

Returns an array of verifiers that are tested prior to handling the token. All verifiers have to pass successfully for token to be handled. The returned array must not be

null

.

引数
tokenContext
戻り値
Verifiers or an empty array. The returned array must not be
null
.
60  {
61  return new Predicate[] {};
62  }

◆ handleToken() [1/2]

Response org.keycloak.authentication.actiontoken.ActionTokenHandler< T extends JsonWebToken >.handleToken ( token,
ActionTokenContext< T >  tokenContext 
)
inherited

Performs the action as per the token details. This method is only called if all verifiers returned in handleToken succeed.

引数
token
tokenContext
戻り値

◆ handleToken() [2/2]

Response org.keycloak.authentication.actiontoken.verifyemail.VerifyEmailActionTokenHandler.handleToken ( VerifyEmailActionToken  token,
ActionTokenContext< VerifyEmailActionToken tokenContext 
)
inline
67  {
68  UserModel user = tokenContext.getAuthenticationSession().getAuthenticatedUser();
69  EventBuilder event = tokenContext.getEvent();
70 
71  event.event(EventType.VERIFY_EMAIL).detail(Details.EMAIL, user.getEmail());
72 
73  AuthenticationSessionModel authSession = tokenContext.getAuthenticationSession();
74  final UriInfo uriInfo = tokenContext.getUriInfo();
75  final RealmModel realm = tokenContext.getRealm();
76  final KeycloakSession session = tokenContext.getSession();
77 
78  if (tokenContext.isAuthenticationSessionFresh()) {
79  // Update the authentication session in the token
80  token.setCompoundOriginalAuthenticationSessionId(token.getCompoundAuthenticationSessionId());
81 
82  String authSessionEncodedId = AuthenticationSessionCompoundId.fromAuthSession(authSession).getEncodedId();
83  token.setCompoundAuthenticationSessionId(authSessionEncodedId);
84  UriBuilder builder = Urls.actionTokenBuilder(uriInfo.getBaseUri(), token.serialize(session, realm, uriInfo),
85  authSession.getClient().getClientId(), authSession.getTabId());
86  String confirmUri = builder.build(realm.getName()).toString();
87 
88  return session.getProvider(LoginFormsProvider.class)
89  .setAuthenticationSession(authSession)
90  .setSuccess(Messages.CONFIRM_EMAIL_ADDRESS_VERIFICATION, user.getEmail())
91  .setAttribute(Constants.TEMPLATE_ATTR_ACTION_URI, confirmUri)
92  .createInfoPage();
93  }
94 
95  // verify user email as we know it is valid as this entry point would never have gotten here.
96  user.setEmailVerified(true);
97  user.removeRequiredAction(RequiredAction.VERIFY_EMAIL);
98  authSession.removeRequiredAction(RequiredAction.VERIFY_EMAIL);
99 
100  event.success();
101 
102  if (token.getCompoundOriginalAuthenticationSessionId() != null) {
104  asm.removeAuthenticationSession(tokenContext.getRealm(), authSession, true);
105 
106  return tokenContext.getSession().getProvider(LoginFormsProvider.class)
107  .setAuthenticationSession(authSession)
108  .setSuccess(Messages.EMAIL_VERIFIED)
109  .createInfoPage();
110  }
111 
112  tokenContext.setEvent(event.clone().removeDetail(Details.EMAIL).event(EventType.LOGIN));
113 
114  String nextAction = AuthenticationManager.nextRequiredAction(session, authSession, tokenContext.getClientConnection(), tokenContext.getRequest(), uriInfo, event);
115  return AuthenticationManager.redirectToRequiredActions(session, realm, authSession, uriInfo, nextAction);
116  }
AuthenticationSessionModel getAuthenticationSession()
Definition: ActionTokenContext.java:134
void removeAuthenticationSession(RealmModel realm, AuthenticationSessionModel authSession, boolean expireRestartCookie)
Definition: AuthenticationSessionManager.java:201
Definition: AuthenticationSessionManager.java:42
Definition: AuthenticationManager.java:102
EventBuilder getEvent()
Definition: ActionTokenContext.java:81
boolean isAuthenticationSessionFresh()
Definition: ActionTokenContext.java:130
void setEvent(EventBuilder event)
Definition: ActionTokenContext.java:85
static String nextRequiredAction(final KeycloakSession session, final AuthenticationSessionModel authSession, final ClientConnection clientConnection, final HttpRequest request, final UriInfo uriInfo, final EventBuilder event)
Definition: AuthenticationManager.java:865
HttpRequest getRequest()
Definition: ActionTokenContext.java:105
static UriBuilder actionTokenBuilder(URI baseUri, String tokenString, String clientId, String tabId)
Definition: Urls.java:190
UriInfo getUriInfo()
Definition: ActionTokenContext.java:97
ClientConnection getClientConnection()
Definition: ActionTokenContext.java:101
RealmModel getRealm()
Definition: ActionTokenContext.java:93
KeycloakSession getSession()
Definition: ActionTokenContext.java:89
Definition: Urls.java:36
static Response redirectToRequiredActions(KeycloakSession session, RealmModel realm, AuthenticationSessionModel authSession, UriInfo uriInfo, String requiredAction)
Definition: AuthenticationManager.java:795

◆ init()

void org.keycloak.authentication.actiontoken.AbstractActionTokenHander< T extends JsonWebToken >.init ( Scope  config)
inlineinherited
53  {
54  }

◆ postInit()

void org.keycloak.authentication.actiontoken.AbstractActionTokenHander< T extends JsonWebToken >.postInit ( KeycloakSessionFactory  factory)
inlineinherited
57  {
58  }

◆ startFreshAuthenticationSession()

AuthenticationSessionModel org.keycloak.authentication.actiontoken.AbstractActionTokenHander< T extends JsonWebToken >.startFreshAuthenticationSession ( token,
ActionTokenContext< T >  tokenContext 
)
inlineinherited
95  {
96  AuthenticationSessionModel authSession = tokenContext.createAuthenticationSessionForClient(token.getIssuedFor());
97  authSession.setAuthNote(AuthenticationManager.END_AFTER_REQUIRED_ACTIONS, "true");
98  return authSession;
99  }

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