Força o usuário a alterar a senha do AD no logon antes de o Explorer ser carregado?

2

Plano de fundo :

Em nosso ambiente, os usuários fazem login em um PC com Windows 7 e, em seguida, iniciam uma área de trabalho do Citrix XenApp em tela cheia (igual à da Microsoft RDSH). O Citrix Reciever com logon único é usado para iniciar a área de trabalho do XenApp. Todo o trabalho é feito na área de trabalho do XenApp. Os servidores XenApp não estão necessariamente no mesmo site do AD que os computadores com Windows 7.

Obrigamos a validade da senha a cada 30 dias. O Windows 7 e superior solicita ao usuário que redefina sua senha por meio de uma mensagem em balão na área de notificação. Isso nos causa dois problemas, conforme detalhado abaixo:

Problemas

1) Os usuários alteram sua senha em sua máquina com Windows 7 enquanto já estão conectados ao Citrix XenApp, por exemplo, pressionando C + A + D. A sessão da área de trabalho do XenApp ainda é autenticada usando sua senha antiga. Em seguida, eles obtêm problemas no XenApp, pois obviamente não podem autenticar com servidores IIS, SQL Servers, etc.

2) Os usuários alteram suas senhas dentro da sessão do XenApp. Isso significa que sua máquina com Windows 7 ainda é autenticada usando sua senha antiga. Eles podem consertar isso bloqueando a tela e desbloqueando-a com sua nova senha, mas infelizmente isso interrompe o processo de Logon Único do cliente Citrix, portanto, se precisarem reiniciar o Citrix XenApp por qualquer motivo, a não ser que façam logoff do Windows 7 e depois de volta (esse cara tem o mesmo problema link ) .

O ponto crucial do problema é que os usuários podem alterar sua senha quando o shell já estiver carregado. Não tivemos esse problema quando as máquinas do usuário final executavam o Windows XP. Acho que isso aconteceu porque o Windows XP solicitou que o usuário alterasse a senha imediatamente após o logon, antes do lançamento do explorer.exe.

Pergunta (s):

  • Podemos configurar o Windows 7 para solicitar que o usuário altere seus senha antes do carregamento do shell?
  • Se não, existe um terceiro pedaço de software que pode nos ajudar com isso? Presumivelmente, qualquer organização que usa o Windows 7 e superior e também um RDSH / Citrix área de trabalho terá um problema semelhante.
por AdamR 03.12.2015 / 16:57

2 respostas

1

Como solução alternativa, você pode desativar as notificações de senhas que expirarão em breve. Dessa forma, os usuários só serão notificados sobre as senhas expiradas quando estiverem expiradas e serão forçadas a alterá-las ao fazer o login em seus sistemas.

Isso pode ser configurado por meio do GPO: link .

    
por 11.12.2015 / 00:55
1

Você pode usar a seguinte função do PowerShell para executar essa tarefa. um aplicativo de desktop não faria muito sentido na minha opinião

function ForcePasswordChange
{
    [CmdletBinding()]
    Param
    (
        [Parameter(Mandatory=$True)]
        [string]$ADGroup,
        [int]$Changes = "0"
    )
    Begin
    {
        Write-Warning "Script start for Group: $ADGroup"  
    }
    Process
    {
        Try
        {
            Get-ADUser -Filter * -SearchBase $ADGroup | ForEach {
                Set-ADUser -Identity $_.name -ChangePasswordAtNextLogon $true
                $Changes++
            }
        }
            Catch [System.Management.Automation.CommandNotFoundException]
            {
                Throw "Script has to run on a Domain Controller or on a Client with ActiveDirectory PowerShell Module installed. Script disrupted"
            }
            Catch [System.ArgumentException]
            {
                Throw "Could not resolve SearchBase (ADGroup) - ADGroup was $ADGroup. Script disrupted"
            }
            Catch [System.Management.Automation.ParameterBindingException]
            {
                Write-Error "Could not resolve Name Identity of one or multiple Users in ADGroup. Maybe ADGroup is empty. Script continues"
            }
    }
    End
    {
        Write-Warning "Script has finished. $Changes Users must change their Password on next logon"
    }
}

Basta salvá-lo como ForcePasswordChange.ps1 e pontuá-lo para carregar a função em uma sessão do powershell no seu controlador de domínio

. C:\yourpath\ForcePasswordChange.ps1

Então você pode escrever assim:

ForcePasswordChange -ADGroup "OU=GroupName,OU=Users,DC=DomainPrefix,DC=Domain,DC=com"

Exemplo para um grupo chamado "Powerusers" na OU "Users Europe" no domínio internal.international.de

ForcePasswordChange -ADGroup "OU=Powerusers,OU=Users Europe,DC=internal,DC=international,DC=de"

Você também pode criar uma tarefa agendada que execute esse script com os argumentos corretos a cada trinta dias, e não precisará fazer mais nada.

    
por 11.12.2015 / 00:36