我正在尝试为我的内联网设置单点登录。我在网上找到了几个解决方案,但我不确定它们是否适用于我的具体情况。
我在同一台服务器上有多个子域。一个级别的用户应该能够访问所有子域,而另一个级别的用户只能访问部分子域。
登录一个子域应该可以使您不必登录任何其他子域。
有人能给我指出正确的方向吗?我在 Ubuntu 上使用 Apache。
答案1
我不是 100% 确定解决方案,但我相当确定您可以运行 LDAP 服务器并让 apache 通过使用 mod_ldap 对其进行身份验证。您可能希望查看本文以查看它是否是您想要的:
http://www.linux.com/archive/feature/120050
从那里您应该能够在 ldap 中创建用户组并配置 apache 以反映不同文件夹的组访问。
公平地警告,我以前从未真正这样做过,所以这可能不是你想要的。
此外,看起来 apache 现在有自己的目录服务器项目,我只使用过 Fedora-DS,现在是 389-DS,应该非常相似:
答案2
您将如何验证您的用户?PHP/mysql?如果是这样,您可以使用 cookies
答案3
以下是我的建议(严格内部网- 同一网络域名的子域名):
在身份提供者上,主身份验证代码之后调用一个方法:
- 向消费者发送有关登录用户的加密数据
- 接收并使用签名的登录 cookie 验证响应
- 返回 cookie 的名称和值
方法返回后 - 为子域设置 cookie。
关于身份消费者服务:
- 接收方法的数据
- 解密
- 如果用户不存在,则创建其帐户
- 确定会话 cookie
- 签署 Cookie
- 将 Cookie 名称、值和签名发送回身份提供者
这比 OAuth、LDAP 等更容易设置,但只适用于子域,因为 cookie 不能跨越域边界。