ASP.NET Core中的Windows身份验证:手动登录与自动Intranet登录和可用组


9

我有一个与本地Intranet Windows身份验证一起使用的ASP.NET Core 3.0应用程序,用于标识已登录的用户。使用标准的Windows身份验证行为,我可以WindowsIdentity毫无问题地捕获用户的行为。

但是,根据用户使用Intranet浏览器自动登录(即,没有密码对话框)或使用浏览器“密码”对话框显式登录到浏览器的方式,对于用户组我会得到不同的结果

以下是一个API请求,它回显包括过滤后的组成员资格列表(不包括内置帐户)在内的用户信息。左边的一个是手动登录,右边的一个是自动登录。

对于显式登录,我正确地看到了该用户所属的所有自定义组。但是,对于自动登录,这些相同的组不会显示:

手动和自动登录的组差异

我还仔细查看了服务器上的User和Identity实例,它为用户引用了完全相同的SID,因此对于Group Membership返回不同的结果似乎很奇怪。

有什么想法为什么当我返回相同的帐户时组列表不同?请注意,这些组是本地的,因此由于域访问而不会成为问题。

注意:我什至在本地主机上进行测试,要对此进行测试,请在此处设置Windows代理设置:

登录配置

取消选中复选框,我被迫登录。启用它们(无论如何在Chromium浏览器中),我必须在浏览器的登录对话框中明确输入我的凭据。

Answers:


9

用户被添加到这些组后是否已注销计算机?

列出的组保存在用户的登录令牌中。我认为可能发生的情况是自动登录发送用户的现有登录令牌(在他们登录Windows时创建),因此它不包含自上次登录以来已添加到的任何组。

手动输入用户名和密码将执行新的登录,因此在登录时将获得一个带有所有组的全新令牌。因此,新的小组将出现在这里。


1
经过一些额外的检查,事实证明您是绝对正确的。最初,我认为自问题出现以来,我已经重新启动了计算机,但是实际上在强制注销并登录后,我确实发现再次登录后确实可以看到这些组。谢谢-回想起来如此明显,但仍然很容易错过。
里克·斯特尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.