【问题标题】:How Web Api/ASP.NET windows authentication works?Web Api/ASP.NET windows 身份验证如何工作?
【发布时间】:2023-03-10 16:10:01
【问题描述】:

根据asp.net官方网站

集成的 Windows 身份验证使用户能够使用他们的 Windows 凭据,使用 Kerberos 或 NTLM。 客户端发送 授权标头中的凭据

但是这种方式在同一页面上的优势

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

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

【问题讨论】:

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


【解决方案1】:

ASP.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 服务器发送票证
(6) - Web 服务器向客户端发送响应

NTLM

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

(1) - 客户端使用来自 Web 服务器的用户名请求访问
(2) - Web 服务器向客户端发送质询消息
(3) - 客户端使用密码哈希(NTLM 响应)加密质询并发送到 Web 服务器
(4) - Web 服务器向域控制器发送用户名、质询和 NTLM 响应
(5) - 域控制器检查 NTLM 响应
(6) - Web 服务器向客户端发送响应

参考资料:
https://docs.microsoft.com/en-us/windows/desktop/secauthn/microsoft-kerberos
https://docs.microsoft.com/en-us/windows/desktop/secauthn/microsoft-ntlm

【讨论】:

    【解决方案2】:

    Windows 身份验证使用户能够使用其 Windows 凭据登录 intranet 环境在同一域下。 就像您使用公司网络登录公司笔记本电脑(您的窗口凭据)一样。(您的公司域) 如果您的 Web Api 开放供所有人使用,那么您不应该使用 Windows 身份验证。

    【讨论】:

    • 谢谢!但我对它在引擎盖下的工作方式很感兴趣。尤其是有关用户(域、用户名)的信息如何通过 HTTP 网络传输
    猜你喜欢
    • 1970-01-01
    • 2012-06-16
    • 2017-10-22
    • 1970-01-01
    • 2015-09-17
    • 2016-07-17
    • 2017-07-30
    • 2016-12-22
    • 1970-01-01
    相关资源
    最近更新 更多