我不清楚你的用例能做什么和不能做什么,但我可以回答Kerberos 委派的目的是什么的问题。
首先让我们谈谈 Kerberos 在委派之前做了什么。很好地理解这部分很重要,因为它很微妙。
Kerberos 验证网络上两个端点之间通信的两端的身份,这些端点可以是交互式用户或计算机上运行的服务。
这是一种强身份验证,因此它不会允许任何形式的中间人攻击。如果设置正确,端点可以保证它们不会受到损害。到服务名称的级别(如果您连接到一台机器上的 II,它与连接到同一台机器上的 SQL Server 是不同的)。它大量使用现代加密技术并需要使用安全证书。身份验证协议的细节很复杂,现在不值得一提,但它涉及两个身份验证端点和身份验证服务器之间的大约 20 个不同的确认步骤(在 Windows 中,域控制器是身份验证服务器)。
那么委托是什么鬼?
委派是 Microsoft 对 Kerberos 标准的扩展,它允许受信任的来源继续对另一个端点进行身份验证。
这使您可以充当“中间人”-但是必须明确设置许多设置,安装证书等才能使其正常工作。这远非简单。(编辑:这是关于详细信息的另一个 SO 答案 - https://stackoverflow.com/a/954154/215752)
因此,例如,您可以让某人对网站进行身份验证,然后让 .NET 代码以同一用户身份连接到 SQL Server以读取具有该用户权限的数据。
现在回答你的问题,因为我不确定你想做什么,我提出三个选择:
1)您想以与在网站上进行身份验证的用户相同的用户身份连接到后端系统。
- 在这种情况下,Kerberos 委派是完美的——它完全符合您的要求。
2) 您想以与在网站上进行身份验证的用户不同的用户身份连接到后端系统(例如服务帐户)。
- 在这种情况下,您不需要委托。Kerberos 到网站和 Kerberos(作为不同的用户)到后端会很好用。
3)您有时想以 SAME 用户身份连接到后端系统,而其他时候则以 DIFFERENT 用户身份连接到后端系统。(例如,您需要验证这是后端系统的合法用户,但希望在其他时候作为系统帐户执行受信任的操作。这是(根据我的经验)最常见的用例。)