代码之家  ›  专栏  ›  技术社区  ›  Florian Winter

正在调试中的集成Windows身份验证。NET Core Weblistener应用程序

  •  0
  • Florian Winter  · 技术社区  · 6 年前

    我有一个。NET核心应用程序使用OWIN和windows身份验证 AuthenticationSchemes.Negotiate ,托管在Weblistener上,而不是IIS上。

    在某些设置中,这只起作用,而在其他设置中,会显示登录提示,并且无法对用户进行身份验证。然而,我从不知道 为什么? 它有效或者为什么无效。

    我该怎么做 调试 生产环境中存在这样的问题,我可以在应用程序中进行哪些更改以使其在生产中可调试?我可以查看哪些日志,在哪里可以启用其他日志记录等。?是否有任何内置的方法可以更改生产中与身份验证相关的应用程序设置(除了更改代码、添加自定义代码以使其可配置,或将其托管在IIS上?)

    注:我 对如何“修复”问题感兴趣,因为它可能有许多不同的原因,并在许多不同的服务器上到处弹出。

    更多详细信息:

    • Visual Studio 2015
    • 1.0.0-preview2-003131(严重?!)
    • 该应用程序只有一个端点,不使用Cookie
    2 回复  |  直到 5 年前
        1
  •  1
  •   Flightdoc5242    6 年前

    了解一些事情会很有帮助,

    1. Visual Studio的哪个版本?
    2. 的哪个版本。净核心

    无法对用户进行身份验证

    你在使用cookies吗?

    我可以查看哪些日志

    您可以启用登录appsettings。json

    Logging in .net core

    除此之外,您还可以查看asp的事件查看器。净分录数

    除此之外,不同的浏览器将以不同的方式处理这些请求,如果它在一个浏览器中工作,但在另一个浏览器中不工作,我将从这里开始

        2
  •  0
  •   Florian Winter    6 年前

    通过消除未知项(如)问题更容易调试。NET核心应用程序。WebListener(或HttpSysServer或Kestrel)中的集成Windows身份验证(IWA)与IIS中的IWA差别不大。因此,第一步是通过设置一个空的IIS网站、应用程序或虚拟目录,启用IWA,禁用匿名身份验证,并绑定到与实际应用程序相同的主机名,来复制问题。

    如果问题可以复制,那么IIS提供了更好的调试问题的方法(例如失败的请求跟踪-这完全没有帮助,或者使用NTLM而不是协商作为首选提供程序,或者禁用内核模式,等等)。

    如果使用Kerberos(很可能在生产中使用),则可以通过在中创建注册表值在客户端计算机上启用Kerberos日志记录 Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters 使用名称 LogLevel 类型 DWORD 和价值 0x1 根据 https://support.microsoft.com/en-us/help/262177/how-to-enable-kerberos-event-logging . 然后可以在 System 使用事件查看器记录。

    如果无法在IIS中复制此问题,则存在问题。NET核心应用程序,但这不太可能,因为在应用程序代码中设置IWA很简单,几乎不可能出错。如果它可以在一个系统上工作,而不能在另一个系统上工作,那么它可能与Kerberos、AD、主机名等有关。