在ASP.NET Core中处理Windows和匿名身份验证

时间:2017-11-06 22:54:51

标签: authentication asp.net-core windows-authentication

我在ASP.NET Core 2.0中有一个项目。我希望用户尽可能使用Windows身份验证自动登录,如果没有,则返回登录屏幕。如果我只启用Windows身份验证而不是匿名身份验证,那么Windows身份验证就可以正常运行我的中间件,一切都很好。但是,如果同时启用了Windows和匿名,即使他们通过Windows登录,我的中间件也会变为空ClaimsIdentity而不是WindowsIdentity

从另一个答案,我发现使用以下代码强制进行Windows身份验证:

await HttpContext.ChallengeAsync(IISDefaults.AuthenticationScheme);

有了这个,我可以使用cookies来强制挑战,如果它还没有尝试过,并显示我的登录页面。现在的问题是,如果用户没有登录,浏览器会在该Windows挑战上抛出内置登录消息。

是否有可能以比我现在所做的更好的方式实现这一目标?用户必须单击取消强制弹出窗口才能进入我的登录屏幕是令人讨厌的,但是如果没有更好的方法那么它将会是什么。

0 个答案:

没有答案