在多个子域中使用Apache的mod_auth进行单点登录?

时间:2008-12-04 00:31:22

标签: apache authentication single-sign-on mod-auth

我有一个域和一组需要身份验证才能访问的子域。我目前正在使用mod_auth在domain.tld级别对用户进行身份验证(mod_auth basic)。我的目标是在域和所有子域之间进行单点登录。

这些凭据会自动转移到子域,还是通过简单的vhost配置更改,还是有更好的方法来执行此操作?

1 个答案:

答案 0 :(得分:9)

mod_auth_basic

浏览器通过URL根目录和身份验证领域的名称来区分需要HTTP身份验证的区域。

例如,两个域都有一个具有相同名称的领域:

http://one.example.com/ with the realm "Please enter credentials!"
http://two.example.com/ with the realm "Please enter credentials!"

首先,用户访问one,要求输入凭据并输入凭据。然后,用户访问two,浏览器识别出该URL不同,从而再次询问用户的凭据。

这是一件好事,因为否则www.badguy.com可以设置它,以便您的浏览器通过您的网上银行登录发送。

简而言之:无法解决基本HTTP身份验证和标准HTTP客户端的问题。

mod_auth_digest的

您可以使用mod_auth_digest,因为您可以指定多个URI位于相同的“保护空间”中。但是,使用此身份验证方法有两个新问题:

  1. 它不能很好地扩展,因为你不能使用通配符域。
  2. 浏览器兼容性不太好。 (有关如何使其与IE一起使用,请参阅the documentation。)