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

3 apache authentication mod-auth single-sign-on

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

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

小智 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!"
Run Code Online (Sandbox Code Playgroud)

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

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

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

mod_auth_digest的

您可以使用mod_auth_digest,因为您可以将多个URI指定在同一个"保护空间"中.但是,使用此身份验证方法有两个新问题:

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