Hi Adrian,
the authentication and authorization process in Syncope (which already
includes some account lockout mechanism, defined via password policies)
is implemented via Spring Security.
The definitions are in
https://github.com/apache/syncope/blob/2_0_X/core/spring/src/main/resources/securityContext.xml
You might want to take a look there for your investigations.
Regards.
On 11/09/2017 17:26, Adrian Gonzalez wrote:
Hello,
I'd need to implement :
- user account lockout
- password expiration
User account lockout needs to work like this :
- when user has made more than <nbOfFailedAuthenticationAttempts> in
the last <lockoutPeriod>, then the user-account will be temporarily
locked.
the account is automatically unlocked after this <lockoutPeriod> (if
no failed authentication attempt has been made in between, otherwise,
it's prolongated).
Password expiration needs to work like this:
- when the lastPwdChange is more than <passwordExpiration> then the
user needs to change his password before being able to login.
Both user account (enabled, lockoutPeriod, failedAttempts) and
password expiration settings are specific for each tenant (1 user
belonging to each tenant)
As tenants are dynamic, we're not using Syncope domains for that.
I can implement both of those feature in my own authentication layer
(a wrapper around syncope REST API).
But I'd like to know if it's possible to implement that inside syncope
(perhaps it would be cleaner).
I looked at LogicActions, AccountRuleConf and creating a
PasswordPolicy for each of my tenants, but I don't think it will work.
- I cannot compute the lastFailedLoginDatelastFailedLogin date (i.e.
to check if the account must still be locked).
- once a user is suspended, I cannot automatically reactivate it once
lockoutPeriod has passed (perhaps adding a quartz job, but seems
overweight).
- I don't know if the current authentication is a success or a failure
(to update the lastFailedLoginDate)
Perhaps I'm missing something like pre/post authentication hooks that
are able to update the current user and know the status of the current
authentication ?
Thanks,
Adrian
--
Francesco Chicchiriccò
Tirasa - Open Source Excellence
http://www.tirasa.net/
Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/