Jak wymusić aktualizację członkostwa grupy użytkowników w systemie Windows 7?

27

Piszę aplikację internetową, która korzysta z .NET Windows Authentication i polega na członkostwie grupy użytkowników w celu autoryzacji ich w różnych obszarach witryny. Obecnie jestem na komputerze deweloperskim, który NIE JEST częścią domeny i nie używa AD, zamiast tego używam tylko lokalnych grup użytkowników. Ogólnie rzecz biorąc działa to dobrze, jak jest.

Jednak podczas testowania aplikacji muszę dodawać i usuwać role na moim koncie użytkownika, aby sprawdzić, czy wszystko działa. Gdy dodam rolę, wydaje się, że nie propaguje się, dopóki nie wyloguję się z systemu Windows i nie zaloguję ponownie.

Czy można wymusić aktualizację członkostwa w grupie bez konieczności wylogowywania?

kingdango
źródło
3
Masz na myśli wylogowanie ze stacji lub ze strony internetowej?
Dan
Dobrze, zaktualizowałem swoje pytanie, aby wyjaśnić. Muszę wylogować się z mojego konta użytkownika Windows (wylogować się z systemu Windows) i zalogować się ponownie.
kingdango
Wymusza aktualizację systemu członkostwa w grupach. Po ponownym uruchomieniu polecenia polecenia zabij eksploratora, a następnie uruchom normalnie eksploratora. będziesz mieć wtedy nowy token bezpieczeństwa również w nowej instancji eksploratora.

Odpowiedzi:

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

Zabije to eksploratora, a następnie otworzy ponownie z kontem użytkownika ... Poprosi cię o podanie hasła i otrzyma nowy token, tym samym aktualizując twoje członkostwo.

Matt Brown
źródło
1
Wydaje się, że to działa, ale zauważyłem, że wszelkie zmapowane połączenia dysków ulegają zerwaniu.
SomeGuy
2
nie działa dla mnie w Windows 10 Pro
Dave Cousineau
Zobacz także: woshub.com/… . Dla komputera klist -lh 0 -li 0x3e7 purge, dla użytkownika klist purge. NB: Sam nie próbowałem tych poleceń; po prostu powtarzam informacje z połączonego artykułu.
JohnLBevan
10

Jest to trudne do przeprowadzenia w skali całego systemu, ale możliwe jest w przypadku pojedynczych plików wykonywalnych poprzez zabicie ich procesu i ponowne uruchomienie ich przy użyciu poświadczeń użytkownika.

Po zalogowaniu otrzymasz między innymi token odzwierciedlający członkostwo w grupie. Jedynym sposobem na odświeżenie tego tokena jest zalogowanie się.

MDMarra
źródło
Jeśli jest to przypadek, to trochę przeszkadza w moich testach. Dzięki za wgląd ... Mam nadzieję, że inny użytkownik ma lepszą odpowiedź, ale zgaduję, że przez ponad 15 000 przedstawicieli wiesz, o czym mówisz.
kingdango
2
@kingdango zawsze możesz użyć, runasaby uruchomić proces jako inny użytkownik niż twój i manipulować członkostwem w grupie tego użytkownika testowego. Za każdym razem, gdy zamykasz i ponownie uruchamiasz proces za runasjego pomocą , należy utworzyć nową sesję, która powinna odzwierciedlać zmienione członkostwo w grupie. Nie testowałem tego, ale teoretycznie powinno to działać w ten sposób.
MDMarra,
To trudne z powodu mojego środowiska programistycznego, ale warto je zbadać. Dzięki za szybką i przemyślaną odpowiedź Mark.
kingdango
4

Miałem podobną sytuację na stronie, która polegała na członkostwie użytkownika w AD, aby umożliwić logowanie do strony. Jedną z rzeczy, które należy rozważyć, jest zlecenie przez serwer WWW uwierzytelnienia / zapytania do serwera AD przy użyciu dostarczonych poświadczeń; jeśli serwer WWW ma dostęp do AD i po prostu pyta serwer, czy użytkownik należy do grupy XYZ, otrzyma listę bezpośrednio z AD, a nie z tokena logowania użytkownika, który wymaga zalogowania / wylogowania, aby uzyskać nowy token z odpowiednimi uprawnieniami.

Wiem, że twoja maszyna deweloperska z opisu nie ma tego dostępu, ale brzmiała tak, jakbyś miał na myśli, że kiedy ją wdrażasz, potrzebujesz tej funkcjonalności.

Jeśli polegasz na tokenie, musisz się wylogować i zalogować ponownie.

Bart Silverstrim
źródło
Dziękuję za miłą odpowiedź. To jeden dobry sposób na rozwiązanie problemu. W normalnych sytuacjach jestem więcej niż szczęśliwy, czekając, aż użytkownik otrzyma zaktualizowaną kontrolę dostępu, nawet jeśli oznacza to, że musi się wylogować i zalogować ponownie na swoim komputerze. To tylko scenariusz testowy, w którym może to być obciążenie, ale tak naprawdę nie jest to taka wielka sprawa. Szczerze mówiąc, zajęło mi więcej czasu, aby znaleźć skrót. :-)
kingdango
1
Może się też przydać, w zależności od scenariusza. Jeśli serwer bezpośrednio wysyła zapytanie do kontrolera domeny, oznacza to, że zmiany „migrują” prawie natychmiast, więc jeśli ktoś otrzymuje dostęp do odcięcia lub dodania, nie zajmuje to cyklu logowania / wylogowywania klienta. Ułatwia to ich pracownikom IT.
Bart Silverstrim
3

Istnieje skryptowy sposób, aby to zrobić całkowicie za pomocą wiersza poleceń; możesz użyć klist .

klist purge
Nixphoe
źródło
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.Czy jednak [Purge](https://technet.microsoft.com/en-us/library/hh134826.aspx?f=255&MSPPError=-2147217396)odzyskuje tokeny? czy po prostu wyrzuca istniejące, pozostawiając cię z niczym? Jeśli nie masz żadnych tokenów, czy ponowne uruchomienie Eksploratora (lub innego procesu, który wymaga tokena) automatycznie je rejestruje?
Brad
Regeneruje token, gdy poprosisz o nowe zasoby. Używałem tego dość często, próbując zaktualizować grupy zabezpieczeń dla zdalnego użytkownika i stacji roboczej podczas dodawania członkostwa w grupach do ich obiektów AD.
Nixphoe,
och, fajnie (i świetnie, pomieszałem formatowanie w tym komentarzu .... masz pomysł)
Brad
-2
  • Otwórz Menedżera zadań
  • Kill Explorer.exe (każdy)
  • Kliknij Plik> Nowe zadanie (Uruchom ...)
  • Wpisz CMD
  • W wierszu polecenia wpisz „RunAs / user: \ explorer.exe

Gotowy.

flip66
źródło
2
Nie, źle. Proszę przeczytać pytanie.
HopelessN00b
4
@ HopelessN00b To z pewnością wygląda na to, że w zasadzie stała się przyjętą odpowiedzią.
Brad
1
@Brad Co nie ma nic wspólnego z tym, czy jest to dobre, czy złe. MDMarra ma rację (podobnie jak Bart), to (i zaakceptowana odpowiedź) są błędne. Ten proces nie zmusza systemu do aktualizacji członkostwa w grupach.
HopelessN00b,
1
@ HopelessN00b masz rację, jak się dowiedziałem później. Ponowne uruchomienie było jedynym sposobem na odświeżenie członkostwa. Obie odpowiedzi są niestety błędne.
Brad
1
Wyloguj się i zaloguj ponownie, nie trzeba restartować. Członkostwa grupowe są stosowane przy logowaniu.
Charlie Wilson,