Vil*_*lx- 10 kerberos delegation
我有两个独立的自制应用程序需要相互通信.一个是前端应用程序(实际上是asp.net),另一个是会计应用程序的后端接口.后端接口不是专门为此前端创建的 - 它是许多其他应用程序用于与我们的产品集成的通用接口.
为方便用户,我们希望在前端应用程序中提供Windows身份验证.这意味着我们需要将凭据传递给后端应用程序,后端应用程序必须检查它们.
我们不希望将我们的前端设置为后端的"可信"应用程序,后端可以作为任何用户进行身份验证.如果前端被黑客入侵,那么它也会破坏后端系统.
据我了解,使用Windows身份验证执行此操作的一种方法是Kerberos委派.但是,这需要为要委派的用户和执行委派的计算机(带有我们的前端的服务器)显式启用.默认情况下,这些选项在Active Directory中被禁用,我怀疑许多系统管理员将保留关于为所有用户启用它们的保留.
此外,我不确定这是Kerberos代表团的意图.我不需要我们的前端来冒充连接的用户.我只需要证明这个用户已经对我进行了身份验证.
你会怎么做?
我不清楚你的用例是什么,不能用你的用例,但我可以回答Kerberos代表团的意思.
首先让我们谈谈Kerberos在授权之前所做的事情.重要的是要理解这部分,因为它是微妙的.
Kerberos通过网络验证两个端点之间通信的两端的身份,这些端点可以是交互式用户或在计算机上运行的服务.
这是强身份验证,因此不允许以任何形式进行中间人攻击.如果设置正确,终点可以保证它们不会受到损害.到服务名称的级别(如果您在计算机上连接到II,则与在同一台计算机上连接到SQL Server不同).它大量使用现代加密技术,需要使用安全证书.身份验证协议的细节很复杂,现在不值得进行,但它涉及两个身份验证端点和身份验证服务器之间大约20个不同的不同确认步骤(在Windows中,域控制器是身份验证服务器).
那么代表团到底是什么?
委派是Kerberos标准的Microsoft扩展,它允许受信任的源继续对另一个端点进行身份验证.
这使您可以充当"中间人" - 但是必须明确设置许多设置,安装证书等,以使其能够正常工作.这远非简单.(编辑:这是关于细节的另一个SO答案 - /sf/answers/66790811/)
因此,例如,您可以让某人对网站进行身份验证,然后将.NET代码连接到SQL Server AS SAME USER以读取具有该用户权限的数据.
现在回答你的问题,因为我不确定你想做什么,我提出三个选择:
1)您希望作为SAME用户连接到后端系统,作为在网站上进行身份验证的用户.
2)您希望作为不同用户连接到后端系统,而不是在网站上进行身份验证的用户(例如服务帐户).
3)您希望在某些时候以SAME用户身份连接到后端系统,并在其他时间连接到不同的用户.(例如,您需要验证这是后端系统的合法用户,但是希望将受信任的操作作为系统帐户执行其他时间.这是(根据我的经验)最常见的用例.)
| 归档时间: |
|
| 查看次数: |
12897 次 |
| 最近记录: |