我们计划在我们的架构中使用 kerberos。我想知道这项技术有哪些感知或实际优势,以及是否有任何替代方案。
请注意,我们有一个 .net 客户端和 java 服务器端。通信将通过消息总线和 SOA
我们计划在我们的架构中使用 kerberos。我想知道这项技术有哪些感知或实际优势,以及是否有任何替代方案。
请注意,我们有一个 .net 客户端和 java 服务器端。通信将通过消息总线和 SOA
如果您在主要是 Windows 环境中工作(即 Windows Server 2k3、域控制器、Active Directory 等),特别是您可以通过 .NET 使用分离的 Web 服务器和数据库服务器进行模拟。使用较旧的 NTLM 方法,您不能执行“双跳”。
让我们看一个例子:
USER1 点击显示订单列表的页面。您的 WEB1 服务器必须向 DB1 查询此信息才能显示在页面上。您希望根据用户的凭据和访问权限来限制看到的订单。因此,您可以设置活动目录组并相应地分配用户。在您的数据库上,您为不同的组提供不同的安全性(例如,GROUP1 可能只有选择,而 GROUP2 可能会获得选择、插入和更新)。
NTLM 不支持执行此操作所需的双跳。WEB1 必须将 USER1 的凭据发送到 DB1(否则 WEB1 必须使用硬编码到 web.config 中的已知专用用户 ID 和密码登录 DB1,例如,通常必须具有完全访问权限才能支持所有可能的用户角色)。您可以想象,如果 WEB1 受到威胁,这可能是一个安全隐患,所以您不能这样做,否则任何获得 WEB1 控制权(可能通过 sql 注入)的人都可以做任何专用用户帐户可以做的事情,或者冒充他们想要的任何人。Kerberos 通过 Windows Server 上的委托,支持通过保持来自域服务器的加密凭据密钥完整并传递来执行第二个跃点,并验证这是允许的(在两端,
在开发具有数据库后端的 Intranet Web 应用程序(99% 的情况下,对吗?)并且您希望通过 Windows 集成安全性控制授权和身份验证时,这样做非常有用。除非您的 Web 服务器和数据库服务器在同一台机器上,否则 Kerberos 确实是您唯一的选择,这意味着无需传输凭据,也无需进行模拟。
也可以看看: