Calendario de caducidad de la contraseña en un momento específico

Calendario de caducidad de la contraseña en un momento específico

¿Hay alguna manera en Windows Server 2003 o 2008 y en Active Directory de especificar en una política que cuando la contraseña de un usuario caduque ese día, caduque a una hora determinada, digamos a las 4:00 a. m.?

El problema surgió porque el vencimiento se produce a mitad de la jornada laboral, digamos a las 9:00 a. m. Luego, cuando un usuario ya ha iniciado sesión en Windows en la red y utiliza diferentes aplicaciones, estas comenzarán a comportarse incorrectamente debido a la autenticación. Deben cerrar sesión y volver a iniciarla para que Windows solicite la nueva contraseña.

Por lo tanto, si cuando inician sesión temprano en la mañana se les solicita la nueva contraseña, no tendrán que volver a cerrar sesión durante el día laboral.

Uno de los administradores de AD dijo: "Pídales que verifiquen si su contraseña caducará antes de comenzar el día"... pero en realidad, ¿quién hace eso?

Y no tengo acceso a un AD para verificar este tipo de políticas. Entonces, ¿es esto posible?

Respuesta1

AFAIK esto no es posible.

Hay múltiples notificaciones de recordatorio que pueden ocurrir indicando que la contraseña actual caducará en N días y ofreciendo la opción de cambiarla. Si el usuario opta por ignorar este recordatorio, lamentablemente está cavando su propia tumba.

Respuesta2

Tenemos un problema similar.

La única forma que se me ocurre es ejecutar un script todas las noches que revisará el directorio activo e identificará qué cuenta caducará al día siguiente. Si es así, márquelo para cambiar la contraseña. El código sería similar al siguiente; No he intentado ejecutar este script, por lo que es posible que necesite algunos ajustes:

Const SEC_IN_DAY = 86400 
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 
Const ADS_SCOPE_SUBTREE = 1000

dim strname
dim strdist
dim dtmvalue

on error resume next


        Set objConnection = CreateObject("ADODB.Connection")
        Set objCommand =   CreateObject("ADODB.Command")
        objConnection.Provider = "ADsDSOObject"
        objConnection.Open "Active Directory Provider"
        Set objCommand.ActiveConnection = objConnection
        objCommand.Properties("Page Size") = 1000
        objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
        objCommand.CommandText = "SELECT distinguishedName, profilepath, name from 'LDAP://dc=Example,dc=com' where objectCategory = 'User'"        


     Set objuserRecordSet = objCommand.Execute

objUSerRecordSet.MoveFirst

Do Until objuserRecordSet.EOF  

    strdist = objuserRecordSet.Fields("distinguishedName").Value
    strname = objuserRecordSet.Fields("name").Value

    Set objUserLDAP = GetObject _ 
    ("LDAP://" & strdist) 

    intCurrentValue = objUserLDAP.Get("userAccountControl") 

        dtmValue = objUserLDAP.PasswordLastChanged  

        If intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then 
            x  =  "The password does not expire." 
        Else 
                Set objDomainNT = GetObject("WinNT://escc.gov.uk") 
                intMaxPwdAge = objDomainNT.Get("MaxPasswordAge") 
                    If intMaxPwdAge < 0 Then 
                        x  = "Password does not expire" 
                    Else
                        intMaxPwdAge=intMaxPwdAge/86400
                        strold = ((dtmValue + intMaxPwdAge)-now)

                        if strold < 2 and strold > 0 then
                            objUserLDAP.pwdLastSet = 0
                            objUserLDAP.SetInfo
                        end if
                    end if

        End If 

    dtmValue= ""

    objuserrecordset.movenext   

Loop

información relacionada