Kerberos,请代表团以及如何正确地做到这一点?(Kerberos, delegation an

2019-08-31 10:20发布

我已经得到了需要进行相互通信两个独立的自制应用程序。 一个是前端应用(asp.net实际上),另一种是一个后端接口到会计应用。 后端接口是不是这个前端专门创建 - 这是许多其他应用程序使用与我们产品集成的通用接口。

为了方便用户,我们希望在我们的前端应用提供了Windows身份验证。 然而,这意味着我们需要传递到它必须检查他们的后台程序的凭据。

我们不希望建立我们的前端作为一个“可信任”的应用程序,可以自身进行身份验证的任何用户的后端。 如果前端是被黑客攻击,它会随后也危及后端系统。

据我了解,使用Windows身份验证做到这一点的一种方式是Kerberos委派。 但是这需要对将要被委派的用户,哪一方是代表团(与我们的前端服务器)的机器中直接启用。 默认情况下,这些选项在Active Directory中禁用的,我怀疑很多系统管理员将有大约开启他们的所有用户的预订。

另外,我真的不知道这是什么Kerberos委派是为那些。 我并不需要我们的前端模仿是连接用户。 我只需要证明该用户自身身份验证到我。

你会怎么做呢?

Answer 1:

我不清楚,你能不能与你的使用情况做什么,但我能回答什么Kerberos委派是为那些问题

首先,让我们来谈谈之前,代表团的Kerberos什么呢。 要了解这部分很好,因为它是很微妙的是非常重要的。

Kerberos的认证通过网络两个端点之间的通信的两端的身份,这些端点可以是交互式的用户或服务的计算机上运行。

这是强大的身份验证 ,因此它不会允许任何形式的人在这方面的中间人攻击。 如果设置正确的终点可以保证他们不会受到影响。 因此,在服务名的水平(如果您连接到IIS的机器上它比连接到SQL Server在同一台机器上的不同)。 它大量采用现代加密技术,并要求使用安全证书。 认证协议的细节是复杂的,不值得进入现在,但它涉及到在两个认证端点和认证服务器之间的确认的约20种不同的不同的步骤(在Windows域控制器是认证服务器)。

那么到底是什么代表团?

代表团是微软扩展到Kerberos的标准,允许受信任的来源继续进行认证到另一个终点。

这可以让你充当“中间人” - 然而,许多设置都必须明确设置,安装证书,等等,让这个工作。 这远非如此简单。 (编辑:这里是另一个在细节,以便回答- https://stackoverflow.com/a/954154/215752 )

因此,例如,你可以有一个人验证到网站,然后让.NET代码连接到SQL服务器相同的用户阅读与该用户的权限数据。


现在回答你的问题,因为我不知道你想干什么我提出三种选择什么:

1)你想连接到后端系统相同的用户作为一个在网站验证。

  • 在这种情况下Kerberos委派是完美的 - 它正是你想要的。

2)你想连接到后端系统不是一个在网站身份验证(例如服务帐户)不同的用户。

  • 在这种情况下,你不希望代表团。 Kerberos来的网站和Kerberos(为不同的用户)到后端将工作的伟大。

3)你想连接到后端系统相同的用户一定的时间和不同的用户其他时间。 (例如,你需要验证这是对后端系统合法用户,而是要作为一个系统帐户其他时间执行可信的行动。这是(在我的经验)最常见的情况。)

  • 在这种情况下,您同时使用。 代表团对于需要验证用户身份,然后恢复到服务帐户身份的时候,你需要的系统访问到后端的连接。 (我的前一个问题走进了如何恢复到系统的身份在.NET平台上的详情,请参阅如何“非冒充”(未经授权Kerberos中?) 。)


Answer 2:

下面是描述的Kerberos是如何工作的,以及如何将它设置一个职位。

ASP.NET沿Windows身份验证凭据传递



Answer 3:

其实Kerberos委派正是为此设计的使用情况。 但这里的挑战是手艺这个遗留系统上,然后用您不想更改广告的设置。

一个可能的黑客是具有前端只是发送用户和验证的时间,但后端可以查询Active Directory事件日志,以确定用户是否已通过身份验证的前端。 这需要您使用Windows事件日志API.and还玩弄事件日志设置在公元登录服务票证的问题。 (我的记忆是,这是默认设置) -



文章来源: Kerberos, delegation and how to do this correctly?