Назад | Перейти на главную страницу

Множественные входы пользователей в систему (домен, службы терминалов) - как определить, является ли токен доступа пользователя недействительным после изменения пароля

Наши пользователи работают в доменной среде терминальных служб. Иногда случается, что пользователи заходят на несколько серверов. Когда политика безопасности вынуждает пользователя изменить пароль, он меняет его на одном сервере (тот, который сначала узнает, что пароль истек, обычно, когда пользователь входит на новый сервер), в то время как другие сеансы все еще регистрируются, но с уже недействительными учетные данные. С этого момента все другие зарегистрированные сеансы будут препятствовать доступу этого пользователя к сетевым службам - подключенные диски отключены, сетевые принтеры отключены. Это нормальное поведение, и проблема не в этом. Но пользователя это сбивает с толку.

Итак, я понял, что было бы неплохо сообщить пользователю, после того, как он изменит свой пароль, что его другие сеансы больше не действительны, и он должен повторно войти в систему. Я думал о небольшом вспомогательном процессе, который будет работать с правами пользователя все время, проверяя, будет ли ... И в этом проблема.

Я знаю, что что-то, вероятно, происходит с токеном доступа, когда пользователь меняет пароль на другом сервере. Насколько я знаю, токен доступа после регистрации - единственный способ определить, есть ли у пользователя доступ к сетевым ресурсам. Но как читать эту конкретную информацию? У токенов доступа есть много информационных структур: http://msdn.microsoft.com/en-us/library/windows/desktop/aa379626(v=vs.85).aspx Может быть, у кого-то более опыт работы с этими структурами?

Одним из решений может быть периодический опрос домашнего хозяйства пользователя, чтобы проверить, доступен ли он. Эта часть Powershell сделает это

[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | out-null
$s = {env:HOMESHARE}
if(!(Test-Path($s))){
    $a = [System.Windows.Forms.MessageBox]::Show("Homedrive inaccessible, would you like to log off?" , "Homedrive" , 4)
    if($a -eq "Yes"){
         ## log of if yes clicked
         logoff
    }
}