Есть ли путь в Windows Server 2003 или 2008 и в Active Directory, чтобы указать в политике, что, когда пользовательский пароль истекает в тот день, чтобы иметь его, истекают в определенное время, говорят 4:00.
Проблема подошла, потому что истечение происходит в течение середины рабочего дня, скажите 9:00. Затем, когда пользователь уже зарегистрирован в Windows в сети и использование различных приложений, они начнут вести себя неправильно из-за аутентификации. Они должны выйти из системы и войти в для Windows для просьбы новый пароль.
Так, если, когда они входят в систему рано утром, это попросило бы новый пароль, затем они не должны будут входить в течение рабочего дня.
Один из AD Администраторов сказал: "Сделайте, чтобы они проверили, истечет ли их пароль прежде, чем запустить день".. но действительно, кто делает это?
И у меня нет доступа к AD для проверки этих типов политик. Так, действительно ли это возможно?
AFAIK это не возможно.
Существует несколько уведомлений о напоминании, которые могут произойти, указав, что текущий пароль истечет в дни N и предложение опции изменить его. Если пользователь решил проигнорировать это напоминание затем, они, к сожалению, роют свою собственную могилу.
У нас есть подобная проблема.
Единственным путем я могу думать, должен запускать скрипт каждую ночь, который пройдет активный каталог и определит, какая учетная запись истечет на следующий день. Если это делает, отметьте его для изменения пароля. Код посмотрел бы что-то как следующее; я не попытался запустить этот скрипт, таким образом, возможно, требовалось бы немного тонкой настройки:
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