Web Api/ASP.. NET windows身份验证工作

本文关键字:windows 身份验证 工作 NET ASP Api Web | 更新日期: 2023-09-27 18:15:48

根据asp.net官方网站

集成的Windows身份验证允许用户使用他们的Windows凭证,使用Kerberos或NTLM。客户端发送授权头

中的凭据

但它的优点是在同一页

内置在IIS中。不发送请求中的用户凭据。

这有点令人困惑。那么,Windows身份验证如何真正工作在http请求Web Api/ASP.NET?

Web Api/ASP.. NET windows身份验证工作

. NET Windows身份验证利用了一些技术使其实现相对透明和无缝。所使用的基本身份验证模式是Kerberos和/或NTLM,下面将对此进行解释。一旦基本身份验证过程完成,IIS将结果传递给ASP.NET。结果是经过身份验证的用户或匿名用户。ASP。. NET然后开始构建应用程序使用的IPrinciple对象。

Kerberos

--------------             --------------
-            - ----(1)---> -            -  
-   Client   - <---(2)---- -   Domain   -  
-            - ----(3)---> - Controller -  
-            - <---(4)---- -            -  
--------------             --------------
     '     /'
     (5)    '
       '    (6)
       '/     '
     --------------
     -            -
     -     Web    -
     -   Server   -
     -            -
     --------------

(1) -客户端从KDC请求TGT
(2) - KDC发送TGT到客户端
(3) -客户端使用TGT请求TGS访问资源
(4) - TGS发送会话密钥和票据给客户端
(5) -客户端发送票据到web服务器
Web服务器向客户端发送响应

NTLM

--------------             --------------
-            - ----(1)---> -            -  
-   Client   - <---(2)---- -     Web    -  
-            - ----(3)---> -    Server  -  
-            - <---(6)---- -            -  
--------------             --------------
                              '     /'
                              (4)    '
                               '    (5)
                               '/     '
                            --------------
                            -            -
                            -   Domain   -
                            - Controller -
                            -            -
                            --------------

(1) -客户端请求访问web服务器的用户名
Web服务器向客户端发送挑战消息
(3) -客户端使用密码哈希(NTLM响应)加密挑战并发送给web服务器
(4) - Web服务器向域控制器发送用户名、挑战和NTLM响应
(5) -域控制器检查NTLM响应
Web服务器向客户端发送响应

引用:
https://learn.microsoft.com/en-us/windows/desktop/secauthn/microsoft-kerberos
https://learn.microsoft.com/en-us/windows/desktop/secauthn/microsoft-ntlm

Windows身份验证允许用户使用Windows凭据登录同一域下的内网环境。就像您使用公司网络登录到公司的笔记本电脑(您的窗口凭据)一样。(贵公司域名)如果你的Web Api是开放给所有人使用的,那么你不应该使用Windows身份验证。