【问题标题】:ASP.NET Web Application -> Windows Authentication -> IIS Express -> Kerberos or NTLM?ASP.NET Web 应用程序 -> Windows 身份验证 -> IIS Express -> Kerberos 或 NTLM?
【发布时间】:2018-02-09 21:14:45
【问题描述】:

使用 Windows 身份验证创建一个新的 ASP.NET Web 应用程序,描述只说“对于 Intranet 应用程序”。了解更多链接指向以下网站:

https://docs.microsoft.com/en-us/aspnet/visual-studio/overview/2013/creating-web-projects-in-visual-studio#auth

说明如下:

Windows 身份验证

如果您选择 Windows 身份验证,示例应用程序将是 配置为使用 Windows 身份验证 IIS 模块 验证。应用程序将显示域和用户 ID 登录的 Active Directory 或本地计算机帐户 Windows,但不包括用户注册或登录 UI。这个选项 适用于 Intranet 网站。

或者,您可以创建一个使用 AD 的 Intranet 站点 通过选择组织下的本地选项进行身份验证 帐户。 On-Premises 选项使用 Windows Identity Foundation (WIF) 而不是 Windows 身份验证模块。一些额外的 需要执行步骤才能设置 On-Premises 选项,但 WIF 启用 Windows 身份验证不可用的功能 模块。例如,使用 WIF,您可以在 Active Directory 和查询目录数据。

但是我不知道解决方案是使用NTLM 还是Kerberos 身份验证?还有什么方法可以在 IIS Express 中切换吗?我试图查看 Chrome 网络选项卡中的请求,但没有从那里获得任何信息。

【问题讨论】:

  • Windows Auth 使用 Active Directory,根据我的理解,它只使用您域的登录名。这就是为什么您无法从 Internet 访问它的原因。你需要 vpn
  • @Steve 不,我仍然可以在未连接到活动目录的计算机上使用它。请参阅上面的 Microsoft 描述:The application will display the domain and user ID of the Active directory OR local machine。我关于NTLMKerberos 的问题仍然存在。 :)
  • 如果您投反对票,请说出原因!

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


【解决方案1】:

这有点难看,但是如果你阅读第一个响应Authorization: Negotiate 标头,

YIGCBgYrBgEFBQKgeDB2oDAwLgYKKwYBBAGCNwICCgYJKoZIgvcSAQICBgkqhkiG9xIBAgIGCisGAQQBgjcCAh6iQgRATlRMTVNTUAABAAAAl7II4gkACQA3AAAADwAPACgAAAAKANc6AAAAD0RFU0tUT1AtSEFLR0xTQldPUktHUk9VUA==p>

转换为ASCII,如果包含NTLMSSP,则为NTL​​M。 像这样……

`??  +     ?x0v?00. 
+    ?7  
  *?H??      *?H??     
+    ?7   ?B @NTLMSSP     ?? ?    7       (   
 ?:    DESKTOP-HAKGLSBWORKGROUP

【讨论】:

  • 转换为ASCII,如果包含NTLMSSP,则为NLTM。
  • 没错,我也看到了这个,但由于提出了一个额外的请求,我已经可以看出它是 NTLM。
【解决方案2】:

我最终使用 Fiddler 查看请求,从那里我可以看到它是 NTLM,因为需要额外的往返来验证客户端。

https://blogs.technet.microsoft.com/tristank/2006/08/02/two-easy-ways-to-pick-kerberos-from-ntlm-in-an-http-capture/

我没有找到任何为 IIS Express 启用 Kerberos 的好方法,但使用普通 IIS,您可以按照本指南进行操作:

https://blogs.msdn.microsoft.com/chiranth/2014/04/17/setting-up-kerberos-authentication-for-a-website-in-iis/

身份验证流程:

请求:

GET http://localhost:44388/ HTTP/1.1
Host: localhost:44388
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: sv-SE,sv;q=0.9,en-US;q=0.8,en;q=0.7

回复:

HTTP/1.1 401 Unauthorized
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
Date: Fri, 09 Feb 2018 21:26:40 GMT
Content-Length: 6137
Proxy-Support: Session-Based-Authentication

请求 2:

GET http://localhost:44388/ HTTP/1.1
Host: localhost:44388
Connection: keep-alive
Authorization: Negotiate YIGCBgYrBgEFBQKgeDB2oDAwLgYKKwYBBAGCNwICCgYJKoZIgvcSAQICBgkqhkiG9xIBAgIGCisGAQQBgjcCAh6iQgRATlRMTVNTUAABAAAAl7II4gkACQA3AAAADwAPACgAAAAKANc6AAAAD0RFU0tUT1AtSEFLR0xTQldPUktHUk9VUA==
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: sv-SE,sv;q=0.9,en-US;q=0.8,en;q=0.7

响应 2:

HTTP/1.1 401 Unauthorized
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
WWW-Authenticate: Negotiate oYIBCzCCAQegAwoBAaEMBgorBgEEAYI3AgIKooHxBIHuTlRMTVNTUAACAAAAHgAeADgAAAAVworiD/awyYeVbOYA0680pgIAAJgAmABWAAAACgDXOgAAAA9EAEUAUwBLAFQATwBQAC0ASABBAEsARwBMAFMAQgACAB4ARABFAFMASwBUAE8AUAAtAEgAQQBLAEcATABTAEIAAQAeAEQARQBTAEsAVABPAFAALQBIAEEASwBHAEwAUwBCAAQAHgBEAEUAUwBLAFQATwBQAC0ASABBAEsARwBMAFMAQgADAB4ARABFAFMASwBUAE8AUAAtAEgAQQBLAEcATABTAEIABwAIADPF56zsodMBAAAAAA==
Date: Fri, 09 Feb 2018 21:26:40 GMT
Content-Length: 341
Proxy-Support: Session-Based-Authentication

请求 3:

GET http://localhost:44388/ HTTP/1.1
Host: localhost:44388
Connection: keep-alive
Authorization: Negotiate oXcwdaADCgEBoloEWE5UTE1TU1AAAwAAAAAAAABYAAAAAAAAAFgAAAAAAAAAWAAAAAAAAABYAAAAAAAAAFgAAAAAAAAAWAAAABXCiOIKANc6AAAAD2wKVsUToYhrt08pUPhmI2WjEgQQAQAAAGDLpB1QQ6YlAAAAAA==
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: sv-SE,sv;q=0.9,en-US;q=0.8,en;q=0.7

响应 3:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
Persistent-Auth: true
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate oRswGaADCgEAoxIEEAEAAACHgwE6ErQtUAAAAAA=
Date: Fri, 09 Feb 2018 21:26:40 GMT
Content-Length: 397

【讨论】:

  • 如果您投反对票,请说出原因!
猜你喜欢
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 2011-06-13
  • 2011-10-08
  • 2018-05-28
  • 1970-01-01
  • 2012-08-03
相关资源
最近更新 更多