在网页上使用Kerberos进行SSO

use*_*316 1 php linux kerberos

我在使用Kerberos时并不是很练习.但我想用Kerberos实现单点登录.

我想要实现的目标是,您只需要使用Windows 7登录然后打开浏览器,就不需要其他验证,例如内联网.这可能吗?

Kerberos正在使用门票.第一步是准备机票授予票,不是吗?Windows Server正在使用Kerberos进行身份验证.那么在Windows登录后是否有票证授予票证?我是否可以使用此(如果有的话)获取其他服务的服务票证?

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

非常感谢帮助:)

亲切的问候,吴兹

Ric*_*man 5

是的,这一切都是可能的,并且一直都在做.当您登录域帐户时,Windows使用您的密码从域控制器获取Kerberos凭据(票证授予票证或TGT),这反过来允许您获取其他服务的票证而无需重新输入密码.您可以使用klist.exe查看TGT以及针对特定服务的任何其他票证.Web浏览器使用HTTP协商交换将票证发送到Web服务器,服务器可以使用该票证来识别您(可选的返回令牌也可以向客户端验证服务器).服务器必须是同一Kerberos领域的成员,或者是具有您的领域信任链的组件.

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

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

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

顺便说一句:英语中的单词是"authenticate",而不是"authentificate".