我应该使用哪种身份验证方法?

Which authentication method should I use?

我正在开发一个在一台服务器上运行的 ASP.NET MVC 应用程序。服务器有用户帐户。

不允许用户帐户通过 RDP 连接到服务器,但我想为他们提供一种通过我的网站更改密码的方法。

该网站有一个匿名用户可以看到的主页,还有一个用户必须使用他们的 windows 凭据登录才能看到的帐户页面,还有一个忘记密码按钮。如果用户忘记了密码,我可以帮他们重设。

用户通过互联网访问我的网站。

Windows 身份验证是否允许匿名访问某些页面?表单认证是否可以读取Windows账户凭证?哪种方式更容易实现我的要求?

总的来说,有extensive information on ASP.NET MVC authentication types个可用。

Windows 身份验证的问题是,它非常有限。您不能真正拥有具有 Windows 身份验证的 "Forgotten Password" 功能,它基本上是只读访问,但另一方面,Windows Intranet 站点的 easiest/fastest 解决方案。这是设计使然,用户应通过域功能更改密码。匿名访问很容易,例如,只需用 [AllowAnonymous] 属性装饰单个方法("Action")或整个 Controller。

您最灵活的选择可能是使用 ADFS。这是两全其美的。您可以组合使用 Windows 认证的内部用户、Forms 认证的外部用户(Username/Password 包括 "Forgot Password" 功能等)和匿名访问,如 described here。但这显然不是最简单的方法。