61 if (certs == null || certs.length == 0) {
64 logger.debug(
"[X509ClientCertificateAuthenticator:authenticate] x509 client certificate is not available for mutual SSL.");
69 X509AuthenticatorConfigModel config = null;
70 if (context.getAuthenticatorConfig() != null && context.getAuthenticatorConfig().getConfig() != null) {
71 config =
new X509AuthenticatorConfigModel(context.getAuthenticatorConfig());
74 logger.warn(
"[X509ClientCertificateAuthenticator:authenticate] x509 Client Certificate Authentication configuration is not available.");
75 context.challenge(
createInfoResponse(context,
"X509 client authentication has not been configured yet"));
83 CertificateValidator validator = builder.build(certs);
84 validator.checkRevocationStatus()
86 .validateExtendedKeyUsage();
87 }
catch(Exception e) {
88 logger.error(e.getMessage(), e);
90 String errorMessage =
"Certificate validation's failed.";
93 errorMessage, e.getMessage()));
99 if (userIdentity == null) {
100 context.getEvent().error(Errors.INVALID_USER_CREDENTIALS);
101 logger.warnf(
"[X509ClientCertificateAuthenticator:authenticate] Unable to extract user identity from certificate.");
103 String errorMessage =
"Unable to extract user identity from specified certificate";
105 context.challenge(
createErrorResponse(context, certs[0].getSubjectDN().getName(), errorMessage));
112 context.getEvent().detail(Details.USERNAME, userIdentity.toString());
113 context.getAuthenticationSession().setAuthNote(AbstractUsernameFormAuthenticator.ATTEMPTED_USERNAME, userIdentity.toString());
116 catch(ModelDuplicateException e) {
118 String errorMessage =
"X509 certificate authentication's failed.";
121 errorMessage, e.getMessage()));
128 String errorMessage =
"X509 certificate authentication's failed.";
131 errorMessage,
"Invalid user"));
138 String errorMessage =
"X509 certificate authentication's failed.";
141 errorMessage,
"User is disabled"));
145 if (context.getRealm().isBruteForceProtected()) {
146 if (context.getProtector().isTemporarilyDisabled(context.getSession(), context.getRealm(), user)) {
147 context.getEvent().user(user);
148 context.getEvent().error(Errors.USER_TEMPORARILY_DISABLED);
150 String errorMessage =
"X509 certificate authentication's failed.";
153 errorMessage,
"User is temporarily disabled. Contact administrator."));
158 context.setUser(user);
161 if (!config.getConfirmationPageDisallowed()) {
178 logger.errorf(
"[X509ClientCertificateAuthenticator:authenticate] Exception: %s", e.getMessage());
static ServicesLogger logger
Definition: AbstractX509ClientCertificateAuthenticator.java:49
void dumpContainerAttributes(AuthenticationFlowContext context)
Definition: X509ClientCertificateAuthenticator.java:229
X509Certificate [] getCertificateChain(AuthenticationFlowContext context)
Definition: AbstractX509ClientCertificateAuthenticator.java:196
boolean userEnabled(AuthenticationFlowContext context, UserModel user)
Definition: X509ClientCertificateAuthenticator.java:238
void modelDuplicateException(@Cause ModelDuplicateException mde)
abstract Object extractUserIdentity(X509Certificate[] certs)
CertificateValidator.CertificateValidatorBuilder certificateValidationParameters(X509AuthenticatorConfigModel config)
Definition: AbstractX509ClientCertificateAuthenticator.java:101
Response createSuccessResponse(AuthenticationFlowContext context, String subjectDN)
Definition: X509ClientCertificateAuthenticator.java:191
Response createInfoResponse(AuthenticationFlowContext context, String infoMessage, Object ... parameters)
Definition: AbstractX509ClientCertificateAuthenticator.java:76
UserIdentityExtractor getUserIdentityExtractor(X509AuthenticatorConfigModel config)
Definition: AbstractX509ClientCertificateAuthenticator.java:222
abstract UserModel find(AuthenticationFlowContext context, Object userIdentity)
Response createErrorResponse(AuthenticationFlowContext context, String subjectDN, String errorMessage, String ... errorParameters)
Definition: X509ClientCertificateAuthenticator.java:183
UserIdentityToModelMapper getUserIdentityToModelMapper(X509AuthenticatorConfigModel config)
Definition: AbstractX509ClientCertificateAuthenticator.java:226
boolean invalidUser(AuthenticationFlowContext context, UserModel user)
Definition: X509ClientCertificateAuthenticator.java:247