¿Cómo se fuerza una actualización a la pertenencia a un grupo de usuarios en Windows 7?

27

Estoy escribiendo una aplicación web que utiliza la autenticación de Windows .NET y se basa en la membresía de un grupo de usuarios para autorizarlos en varias áreas del sitio web. En este momento estoy en una máquina de desarrollo que NO ES parte de un dominio y no está usando AD, en cambio solo estoy usando grupos de usuarios locales. En general, esto funciona bien como está.

Sin embargo, a medida que pruebo la aplicación, necesito agregar y eliminar roles en mi cuenta de usuario para verificar que las cosas funcionen. Cuando agrego un rol, no parece propagarse hasta que cierre sesión en Windows y vuelva a iniciar sesión.

¿Es posible forzar una actualización de la pertenencia al grupo sin tener que cerrar sesión?

Kingdango
fuente
3
¿Te refieres a cerrar sesión en la estación o en el sitio web?
Dan
Buen punto, actualicé mi pregunta para aclarar. Tengo que cerrar sesión en mi cuenta de usuario de Windows (cerrar sesión en Windows) e iniciar sesión nuevamente.
kingdango
Obliga a actualizar el sistema a membresías grupales. Después de ejecutar la tarea de comando kill explorer nuevamente, luego ejecute el explorador normalmente. entonces también tendrás un nuevo token de seguridad en tu nueva instancia de explorador.

Respuestas:

25
taskkill.exe /F /IM explorer.exe
runas /user:%USERDOMAIN%\%USERNAME% explorer.exe

Esto matará al explorador, luego se volverá a abrir con su cuenta de usuario ... Le pedirá su contraseña y obtendrá un nuevo token, lo que actualizará su membresía.

Matt Brown
fuente
1
Esto parece funcionar, pero descubrí que cualquier conexión de unidad asignada se rompe.
SomeGuy
2
no funciona para mí en Windows 10 Pro
Dave Cousineau
Ver también: woshub.com/… . Para computadora klist -lh 0 -li 0x3e7 purge, para el usuario klist purge. NB: no he probado esos comandos yo mismo; solo repite información del artículo vinculado.
JohnLBevan
10

Esto es difícil de realizar a escala de todo el sistema, pero es posible con archivos ejecutables individuales eliminando su proceso y relanzándolos bajo las credenciales del usuario.

Cuando inicia sesión, recibe un token que refleja la pertenencia a su grupo, entre otras cosas. La única forma de actualizar este token es iniciar sesión.

MDMarra
fuente
Si este es el caso, es un fastidio, va a dificultar un poco mis pruebas. Gracias por la información ... Espero que otro usuario tenga una mejor respuesta, pero supongo que por tu representante de 15k + sabes de lo que estás hablando.
kingdango
2
@kingdango que siempre puede usar runaspara ejecutar el proceso como un usuario diferente al suyo y manipular la pertenencia al grupo de ese usuario de prueba. Cada vez que cierre y vuelva a iniciar el proceso runas, debe crear una nueva sesión, que debe reflejar la membresía del grupo modificada. No he probado esto, pero en teoría debería funcionar de esta manera.
MDMarra
Eso es difícil debido a mi entorno de desarrollo, pero vale la pena explorarlo. Gracias por la rápida y reflexiva respuesta de Mark.
kingdango
4

Tuve una situación similar en un sitio web que dependía de la membresía de un usuario en AD para permitir el inicio de sesión en el sitio web. Una cosa a considerar es hacer que el servidor web realice la autenticación / consulta al servidor AD con sus credenciales proporcionadas; si el servidor web tiene acceso a AD y solo pregunta al servidor si el usuario está en el grupo XYZ, obtendrá una lista directamente de AD, no del token de inicio de sesión del usuario que requiere inicio de sesión / cierre de sesión para obtener un nuevo token con los privilegios adecuados.

Sé que su máquina de desarrollo en este momento por la descripción no tiene ese acceso, pero sonaba como si quisiera decir que cuando la implementa necesita esta funcionalidad.

Si confía en el token, deberá cerrar sesión y volver a iniciarla.

Bart Silverstrim
fuente
Gracias por la atenta respuesta. Esa es una buena manera de llegar al problema. En situaciones normales, estoy más que feliz de esperar hasta que el usuario reciba un control de acceso actualizado, incluso si eso significa que deben cerrar sesión e iniciar sesión nuevamente en su máquina. Es solo el escenario de prueba donde esto puede ser una carga, pero en realidad no es tan importante. Honestamente, me ha llevado más tiempo investigar un atajo. :-)
kingdango
1
También puede ser útil, dependiendo del escenario. Si el servidor consulta el DC directamente, eso significa que los cambios "migran" casi de inmediato, por lo que si alguien obtiene el acceso cortado o agregado, no se necesita un ciclo de inicio / cierre de sesión del cliente. Hace que sea un poco más fácil para su personal de TI.
Bart Silverstrim
3

Hay una forma programada de hacer esto completamente a través de la línea de comando; puedes usar klist .

klist purge
Nixphoe
fuente
Purging tickets destroys all tickets that you have cached, so use this attribute with caution. It might stop you from being able to authenticate to resources. If this happens, you will have to log off and log on again.[Purge](https://technet.microsoft.com/en-us/library/hh134826.aspx?f=255&MSPPError=-2147217396)Sin embargo, ¿ vuelve a agarrar las fichas? ¿O simplemente tira a la basura los existentes y te deja sin nada? Si no tiene tokens, ¿relanzar el explorador (o cualquier proceso que necesite un token) los recupera automáticamente?
Brad
Regenerará el token cuando solicite nuevos recursos. Lo he usado con bastante frecuencia cuando intento actualizar grupos de seguridad para usuarios remotos y estaciones de trabajo cuando agrego membresía de grupo a sus objetos AD.
Nixphoe
oh, agradable (y explosión, estropeé el formato en ese comentario ... entiendes la idea)
Brad
-2
  • Administrador de tareas abierto
  • Kill Explorer.exe (cada uno)
  • Haga clic en Archivo> Nueva tarea (Ejecutar ...)
  • Escriba CMD
  • En el símbolo del sistema, escriba "RunAs / user: \ explorer.exe

Hecho.

flip66
fuente
2
Sin error. Por favor lea la pregunta.
HopelessN00b
44
@ HopelessN00b Parece que es básicamente la respuesta aceptada.
Brad
1
@Brad, que no tiene nada que ver con si está bien o mal. MDMarra tiene razón (al igual que Bart), esto (y la respuesta aceptada) están equivocados. Este proceso no obliga al sistema a actualizar las membresías de grupo.
HopelessN00b
1
@ HopelessN00b tienes razón, como descubrí más tarde en el día. Reiniciar era la única forma de actualizar las membresías. Ambas respuestas son incorrectas, lamentablemente.
Brad
1
Cerrar sesión y volver a iniciarla debería ser suficiente, no es necesario reiniciar. Las membresías grupales se aplican al iniciar sesión.
Charlie Wilson