当我们的客户安装我们的软件时,他们通常会选择“拆分安装”,即服务在一个机器上运行,而数据库在另一个机器上。服务可能与其他服务通信,或者数据库可能包含需要与另一个数据库通信的存储过程。
这将我们带入了 Kerberos 和 SetSPN 的阴暗世界。
我正准备向支持人员发送一封电子邮件,详细说明 Windows 支持的各种身份验证级别之间的差异,但我意识到我对模拟和委托之间的区别的了解有点模糊,而且我真的很粗略到 Kerberos。
任何人都可以启发我吗?
Authenticate (authn) 的意思是识别一个用户。授权(authz)意味着确定一个经过身份验证的用户拥有什么权限。匿名用户尚未经过身份验证,但可能对系统具有某些权限(“访客”)。模拟和委托是同一枚硬币的两个方面。如果我使用您的身份执行某项操作,我会冒充您;你授权我冒充你并采取一些行动。
Kerberos(或“Kerb”)是一种基于令牌的身份验证方案。也就是说,它是一种让用户登录并在系统中被正确识别(authn)和授予权限(authz)的方法。
根据评论:您不需要 Curb 进行委派,但它内置于 Server 2003。您还可以使用 NTLM、SSL 证书映射或摘要式身份验证。但没有一个像 Kerb 那样健壮和灵活。您还可以选择进行约束委派,它只允许对特定服务进行委派。原因是您需要一个受信任的第三方来验证您的令牌。基本上,流程是这样的......
如您所知,这是一个深刻的主题。:) 这是一篇关于上述一些选项的好文章。另外,请查看此网络广播——它是关于 ADFS 的,但它在可能有帮助的概念上做得很好。
您可能想在Ken Schaefer 的网站上复习 Kerberos。他的Kerberos 常见问题解答令人震惊。
添加到上述答案中,委托是让一台服务器使用客户端的原始身份验证对另一台服务器进行身份验证。使用 Kereberos,这相对容易实现 - 您只需允许第一台服务器“重新发布”客户端的身份验证令牌。替代方案(NTLM)不允许轻松/安全地进行委派,因为它是质询/响应身份验证 - 服务器向辅助服务器进行身份验证的唯一方法是它是否可以响应质询/响应,并做到这一点需要客户的密码。
我有一个关于 Kerberos 委派的 ServerFault 答案,这可能很有趣。