feature: support password polices: minimal length, repeat check,

password expiration, multi auth failures locks user
This commit is contained in:
Qiu Jian
2019-10-30 20:21:13 +08:00
parent 5d0f9488cd
commit 93adf05547
7 changed files with 158 additions and 17 deletions
+10
View File
@@ -22,6 +22,7 @@ import (
api "yunion.io/x/onecloud/pkg/apis/identity"
"yunion.io/x/onecloud/pkg/keystone/driver"
"yunion.io/x/onecloud/pkg/keystone/models"
o "yunion.io/x/onecloud/pkg/keystone/options"
"yunion.io/x/onecloud/pkg/mcclient"
)
@@ -49,10 +50,19 @@ func (sql *SSQLDriver) Authenticate(ctx context.Context, ident mcclient.SAuthent
if err != nil {
return nil, errors.Wrap(err, "UserManager.FetchUserExtended")
}
localUser, err := models.LocalUserManager.FetchLocalUser(usrExt)
if err != nil {
return nil, errors.Wrap(err, "LocalUserManager.FetchLocalUser")
}
err = models.VerifyPassword(usrExt, ident.Password.User.Password)
if err != nil {
localUser.SaveFailedAuth()
if localUser.FailedAuthCount > o.Options.PasswordErrorLockCount {
models.UserManager.LockUser(usrExt.Id)
}
return nil, errors.Wrap(err, "usrExt.VerifyPassword")
}
localUser.ClearFailedAuth()
return usrExt, nil
}