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