MVC 授权不使用 AD 进行身份验证

MVC authorize not authenticate using AD

我已经搜索过这个网站和许多其他网站来寻找答案,但每次都没有找到答案。如果这是重复的,我很乐意接受对原始问题的指导并给出答案:

我已经构建了一个 MVC 4 站点,并且在需要的地方使用了 Authorize 标记,这按预期工作。

我的问题是我需要一种机制来提示用户(已经登录或域中的其他一些有效用户)在一个页面上输入他们的 windows 凭据以便 confirm/authorize 那个用户。这不是授权过滤器正在做的事情。授权过滤器实际上是对用户进行身份验证。因此相应地更改 User.Identity 信息。

是否可以在不实际更改用户对象的情况下仅授权用户(而不是进行身份验证)?

仅返回 401 响应会强制出现 windows 提示,但这反过来会进行身份验证,而不是授权。

虽然可以通过接受 username/password 输入的自定义操作来实现解决方案,但我的要求特别要求显示本机浏览器 windows 提示。

该站点正在使用 IIS Express 并设置为 windows 身份验证,这一切都符合我的需要。除了上面提到的 "true" 授权问题。浏览器必须是IE9。目前 运行 在 Windows 10。

没有。您当前正在使用 Windows 身份验证,这就是它的工作原理。不需要登录,因为用户已经登录 Windows,这就是重点。

要执行您想要的操作,您需要使用像 Identity 这样的个人身份验证库。这将为您提供登录功能。但是,这不适用于开箱即用的 AD,但您 可以 自己添加它。换句话说,不是使用身份功能通过用户名和密码查找用户以进行身份​​验证,而是通过 LDAP 连接到 AD,并在那里验证凭据。您还需要使用 LDAP 连接将用户在 AD 中的组添加到他们在身份中的角色。然后,您可以正常使用 Authorize 属性。

总而言之,如果您想真正允许用户以任何 AD 用户身份登录,那么您几乎只能靠自己了。没有内置的功能。自己为此设置一些东西相对简单,即使不是很容易,但同样,这取决于您。