Uwierzytelnianie systemu Windows w programie ASP.NET Core: ręczne logowanie a automatyczne logowanie do intranetu i dostępne grupy

9

Mam aplikację ASP.NET Core 3.0, która współpracuje z lokalnym intranetowym uwierzytelnianiem systemu Windows w celu identyfikacji zalogowanych użytkowników. Korzystając ze standardowych zachowań uwierzytelniania systemu Windows, mogę WindowsIdentitybez problemu uchwycić użytkownika .

Jednak w zależności od sposobu zalogowania użytkownika do przeglądarki przy użyciu automatycznego logowania do przeglądarki intranetowej (tj. Bez okna dialogowego hasła) lub jawnego zalogowania przy użyciu okna dialogowego hasła przeglądarki, otrzymuję różne wyniki dla grup użytkowników .

Poniżej znajduje się żądanie interfejsu API, które wyświetla echo informacji o użytkowniku, w tym filtrowaną listę członkostwa w grupach (z wyłączeniem kont wbudowanych). Ten po lewej to logowanie ręczne, ten po prawej to automatyczne logowanie.

W przypadku jawnego logowania poprawnie widzę wszystkie grupy niestandardowe, których użytkownik jest częścią. Jednak w przypadku automatycznego logowania te same grupy nie są wyświetlane:

różnice grupowe dla logowania ręcznego vs. automatycznego

Przyjrzałem się również instancjom użytkownika i tożsamości na serwerze i odnosi się on dokładnie do tych samych identyfikatorów SID użytkownika, więc wydaje się dziwne, że dla członkostwa grupy zwracane są różne wyniki.

Jakieś pomysły, dlaczego lista grup jest inna, gdy otrzymuję to samo konto? Pamiętaj, że grupy są lokalne, więc nie powinno to stanowić problemu z powodu dostępu do domeny.

Uwaga: testuję lokalnie nawet na localhost, i aby to przetestować, ustawiam tutaj ustawienia Proxy systemu Windows:

Konfiguracja logowania

Po wyłączeniu pól wyboru jestem zmuszony się zalogować. Przy włączonych (w każdym razie w przeglądarkach Chromium) muszę jawnie wprowadzić swoje dane uwierzytelniające w oknie dialogowym logowania przeglądarki.

Rick Strahl
źródło

Odpowiedzi:

9

Czy użytkownik wylogował się ze swojego komputera od czasu dodania do tych grup?

Wymienione grupy są przechowywane w tokenie logowania użytkownika. Myślę, że może się zdarzyć, że automatyczne logowanie wyśle ​​istniejący token logowania użytkownika (utworzony podczas logowania do systemu Windows), więc nie będzie zawierał żadnych grup, do których zostali dodani od czasu ostatniego logowania.

Ręczne wpisanie nazwy użytkownika i hasła powoduje ponowne zalogowanie, a tym samym uzyskanie zupełnie nowego tokena ze wszystkimi grupami w momencie logowania. Pojawią się tam nowe grupy.

Gabriel Luci
źródło
1
Po dodatkowej kontroli okazuje się, że masz całkowitą rację. Początkowo myślałem, że uruchomiłem ponownie komputer od czasu pojawienia się problemów, ale po wymuszeniu wylogowania i zalogowaniu się stwierdziłem, że rzeczywiście po ponownym zalogowaniu byłem w stanie zobaczyć grupy. Dzięki - tak oczywiste z perspektywy czasu, ale wciąż tak łatwe do przeoczenia.
Rick Strahl