【问题标题】:Windows Authentication .Net Core 2.0 Show Username Without Security PromptWindows 身份验证 .Net Core 2.0 显示没有安全提示的用户名
【发布时间】:2017-10-25 14:24:56
【问题描述】:

我创建了一个启用 Windows 身份验证的全新 Asp.Net Core 2.0 web mvc 应用程序。 如果我立即点击播放,它会提示我输入不是我想要的用户凭据。如果我点击取消,则会将我重定向到 401.2 未经授权的错误屏幕,并显示以下错误:

"由于无效,您无权查看此页面 身份验证标头。”

当我停止应用程序并在项目上启用匿名身份验证并再次点击播放时,它会成功运行应用程序但不会显示我的用户名。 @User.Identity.Name 返回空字符串。

如何绕过安全提示,同时仍能显示我的用户名?

在 .NET Framework 中,我会在 web.config 文件中使用它以及匿名身份验证 = true,它会按照我想要的方式工作:

<authentication mode="Windows" />
<authorization>
  <deny users="?" />
</authorization>

我正在使用 Visual Studio 15.4.1。

【问题讨论】:

    标签: c# authentication asp.net-core-mvc windows-authentication asp.net-core-2.0


    【解决方案1】:

    我认为&lt;authentication&gt; 标签与 ASP.NET 相关,而不是 IIS。在 ASP.NET Core 中,System.Web 管道不运行。

    通过在web.config 中使用以下配置,我已经成功地使用 ASP.NET Core 实现 Windows 身份验证

    <configuration>
      <system.webServer>
        <security>
          <authentication>
            <anonymousAuthentication enabled="false" />
            <windowsAuthentication enabled="true" />
          </authentication>
        </security>
      </system.webServer>
    </configuration>
    

    &lt;system.webServer&gt; 部分是在您通过 IIS 管理器更改身份验证设置时被修改的部分。


    在 Ben 的第一条评论后编辑

    抱歉,我误读了您最初的部分消息,并认为您试图在 IIS 中部署应用程序。

    看起来 Windows 身份验证设置正确,因为系统提示您输入凭据。我不明白为什么你会收到提示。我使用的是 IE11、Edge 和 Chrome,它们都知道如何在不提示我的情况下发送 Windows 凭据。

    您在进行测试时使用什么浏览器?你能试试我上面列出的那些吗?

    【讨论】:

    • 我尝试将 web.config 添加到我的项目并添加您建议的代码,但它不起作用。它实际上在windows身份验证行出错(500.19请求的页面无法访问,因为该页面的相关配置数据无效。)
    • 这个仍然没有运气。我正在测试 IE11 和 Edge。它只会在应用程序的初始加载时提示我,但可以在第一次输入我的凭据后浏览应用程序。如果我找到答案,我会更新这篇文章。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 2010-10-10
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多