use of org.apereo.cas.configuration.model.support.pm.PasswordManagementProperties in project cas by apereo.
the class VerifySecurityQuestionsAction method doExecute.
@Override
protected Event doExecute(final RequestContext requestContext) throws Exception {
final HttpServletRequest request = WebUtils.getHttpServletRequest(requestContext);
final String username = requestContext.getFlowScope().getString("username");
final PasswordManagementProperties pm = casProperties.getAuthn().getPm();
if (!pm.getReset().isSecurityQuestionsEnabled()) {
LOGGER.debug("Security questions are not enabled");
return success();
}
final Map<String, String> questions = passwordManagementService.getSecurityQuestions(username);
final AtomicInteger i = new AtomicInteger(0);
final long c = questions.values().stream().filter(v -> {
final String answer = request.getParameter("q" + i.getAndIncrement());
return answer.equals(v);
}).count();
if (c == questions.size()) {
return success();
}
return error();
}
use of org.apereo.cas.configuration.model.support.pm.PasswordManagementProperties in project cas by apereo.
the class PasswordManagementConfiguration method passwordChangeService.
@ConditionalOnMissingBean(name = "passwordChangeService")
@RefreshScope
@Bean
public PasswordManagementService passwordChangeService() {
final PasswordManagementProperties pm = casProperties.getAuthn().getPm();
if (pm.isEnabled()) {
final Resource location = pm.getJson().getLocation();
if (location != null) {
LOGGER.debug("Configuring password management based on JSON resource [{}]", location);
return new JsonResourcePasswordManagementService(passwordManagementCipherExecutor(), casProperties.getServer().getPrefix(), casProperties.getAuthn().getPm(), location);
}
LOGGER.warn("No storage service (LDAP, Database, etc) is configured to handle the account update and password service operations. " + "Password management functionality will have no effect and will be disabled until a storage service is configured. " + "To explicitly disable the password management functionality, add 'cas.authn.pm.enabled=false' to the CAS configuration");
} else {
LOGGER.debug("Password management is disabled. To enable the password management functionality, " + "add 'cas.authn.pm.enabled=true' to the CAS configuration and then configure storage options for account updates");
}
return new NoOpPasswordManagementService(passwordManagementCipherExecutor(), casProperties.getServer().getPrefix(), casProperties.getAuthn().getPm());
}
Aggregations