2014-03-07 39 views
1

我在使用Kerberos时不太习惯。但我想用Kerberos实现单点登录。在网页上使用Kerberos进行SSO

我希望实现的目标是,您只需使用Windows 7登录,然后打开浏览器并且不需要其他认证,例如,为内联网。这可能吗?

Kerberos正在使用票据。第一步是为票证授予票证,不是吗? Windows Server使用Kerberos进行身份验证。那么在Windows中登录后是否有票证授予票证?我可以用这个(如果有的话)获得其他服务的服务票吗?

另一个问题是关于Apache:当我使用Kerberos与Linux服务器时,我需要一个名为mod_auth_kerb的mod,不是吗?如果这是安装在我的Linux服务器上,我可以使用Kerberos验证?如果在Linux服务器上有一个内联网,怎么可能用Kerberos进行认证。我应该在PHP代码中进行身份验证还是可能“学习”apache以某种方式验证?

非常感谢帮助:)

亲切的问候, WUZ

回答

5

是的,这是所有可能,做所有的时间。登录到域帐户时,Windows使用您的密码从域控制器获取Kerberos凭证(票证授予票证或TGT),这反过来又允许您在不重新输入密码的情况下获取其他服务的票证。您可以使用klist.exe查看TGT和其他特定服务的门票。 Web浏览器使用HTTP协商交换将票发送到Web服务器,服务器可以使用该票来识别您(可选的返回令牌也可以向客户端验证服务器)。服务器必须是同一个Kerberos领域的成员,或者是具有领土信任链给你的领域的成员。

mod_auth_kerb是Apache中用于Kerberos身份验证的最常用模块。您可以使用形式为HTTP/server-hostname的setspn.exe将Web服务器的Kerberos主体添加到AD帐户。然后使用Windows上的ktpass.exe或Unix上的ktutil(您需要AD帐户的密码)等程序创建一个包含该主体的密钥(称为“密钥表”)的文件。 mod_auth_kerb配置引用keytab。 mod_auth_kerb将环境变量REMOTE_USER设置为客户端标识,并且您只需在应用程序中读取它(本例中为PHP代码)。

您必须将Web浏览器配置为实际使用HTTP协商身份验证,其详细信息因浏览器而异。

这只是一个高层次的回答您的直接问题;当然还有很多其他的细节,因为你正在处理整个基础设施和几个必须协调的部分:Kerberos,DNS名称,主要名称,浏览器配置,Apache等。

由方式:英文单词是“认证”,而不是“认证”。