ASP.NET Web 应用程序 -> Windows 身份验证 -> IIS Express -> Kerberos 或 NTLM?

问题描述 投票:0回答:3

使用 Windows 身份验证创建新的 ASP.NET Web 应用程序,描述仅显示“对于 Intranet 应用程序”。了解更多链接可访问以下网站:

https://learn.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 站点 通过选择“组织”下的“本地”选项进行身份验证 账户。本地选项使用 Windows Identity Foundation (WIF) 而不是 Windows 身份验证模块。一些额外的 设置本地选项需要执行一些步骤,但 WIF 启用 Windows 身份验证无法使用的功能 模块。例如,使用 WIF,您可以在以下位置配置应用程序访问: Active Directory 和查询目录数据。

但是我不知道该解决方案是否使用

NTLM
Kerberos
身份验证?还有什么方法可以在 IIS Express 中切换此功能吗?我尝试查看 Chrome 网络选项卡中的请求,但我没有从那里获得任何信息。

enter image description here

c# asp.net asp.net-mvc authentication windows-authentication
3个回答
0
投票

这有点难看,但是如果您阅读第一个响应

Authorization: Negotiate
标题,

YIGCBgYrBgEFBQKgeDB2oDAwLgYKKwYBBAGCNwICCgYJKoZIgvcSAQICBgkqhkiG9xIBAgIGCisGAQQBgjcCAh6iQg RATlRMTVNTUAABAAAAL7II4gkACQA3AAAADwAPACgAAAAKANc6AAAAD0RFU0tUT1AtSEFLR0xTQldPUktHUk9VUA==

转换为ASCII,如果包含

NTLMSSP
,则为NTLM。 像这样...

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

0
投票

Kerberos 仅在客户端可以获得“票证”时才起作用,并且获得票证的两个主要要求是:

  • 用户必须使用其 AD DS 登录客户端设备 凭证
  • 服务帐户(在本例中是 IIS 运行的帐户) 必须设置与所使用的 URL 匹配的服务主体名称 (SPN)。 SPN 的推导 直接从浏览器地址栏中输入的 URL 获取。例如,如果 URL 为 https://www.example.com/,SPN 为 HTTP/www.example.com。

但是,您在本例中使用的主机名“localhost”并不是允许的 SPN,因为它实际上不是 DNS 主机名(它是由您的本地操作系统解释的名称)。同样,IP 地址不能有对应的 SPN。

简短回答:如果您使用“localhost”作为主机名,客户端将不会启动 Kerberos 并回退到 NTLM。

PS:如果您确实关心安全性,则必须使用 HTTPS(即使对于 Kerberos)。


-1
投票

我最终使用 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
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.