2010-07-01 104 views
2

我需要为我的域上的用户提供openid服务。他们都有独特的子域名,如:abc.example.com,我希望他们使用abc.example.com作为他们的openid身份...运行我自己的OpenID身份服务器/服务(php)

我读到这个 ​​- https://www.myopenid.com/help#own%5Fdomain - 但它看起来像它的(a)一个用户和(b)我需要有一个现有的myopenid /类似的帐户...

phpmyid看起来拉德,但似乎只适用于单个用户......我怎么可以调整它,使它为所有人运行一个子域?或者我还能做什么?

+0

什么者myOpenID描述的方式到您的网站(任意网站)链接到myOpenID来说帐户(OpenID的代表团),可能不是你想要的。 (并且代表团甚至不为一些OpenID消费者站点工作!我应该问一个关于StackOverflow或SuperUser的问题吗?) – MvanGeest 2010-07-01 11:36:23

回答

3

子站点是容易的部分。为此,您将需要“通配符DNS”,它实质上创建了此DNS记录:*.domain.com IN A 10.10.0.1分别用您的域名和IP替换域名和IP。接下来,你需要设置任何web服务器来读取通配符域(这通常在Apache中工作,如下所示:ServerAlias *.domain.com,但将取决于从web服务器到web服务器。

在最后一部分phpMyID - 它只适用于一个人身份,不幸的是这篇文章太小而无法完成如何做到这一点,这些是一些snipits和更高层次的想法,可能需要实施

首先,你需要采取任何硬编码信息并将其移动到数据库(用户名,密码等),以便您可以更轻松地跟踪用户。您还将被迫仅使用[A-Za-z0-9_]跟踪用户名,因为&,%,$,#,@,!, ,etc将全部破坏DNS,并且用户可以'访问P rovider了。

你还需要知道什么被访问的当前主机名是:

<?php 
$hostname = $_SERVER['SERVER_NAME']; 
$username = basename($hostname, ".domain.com"); // Replace .domain.com with your domain 
?> 

所以,现在你有一个用户,你可以构建数据库调用来选择用户的信息 - 然后更新一次使用来自数据库和脚本的动态用户数据的“一个用户phpMyID”的硬编码值应该以快乐的方式继续。自从我看了phpMyID已经有一段时间了,但我认为这是它背后的主要内容。

+0

感谢Marco - 正在研究上述内容! – RubiCon10 2010-07-13 10:20:20

+0

我也一直在使用CommunityID,它支持开箱即用的基于URL的URL。 – 2010-07-13 16:04:03

+0

我很佩服! 'basename'的好用法,非常有创意。 – 2010-07-18 15:16:51

2
+1

虽然这可能在理论上回答这个问题,[这将是更可取的](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers/8259#8259)在这里包括答案的基本部分,并提供参考链接。 – Benjol 2011-02-24 08:34:53

+0

请考虑@Benjol的建议。我不能告诉你,我必须删除多少票数最多的答案,因为它们只包含一个断开的链接。如果该链接死亡,你的答案也会如此。请详细说明。 – 2011-02-24 08:36:59

0

Prairie是一个基于OpenID的轻量级Internet标识服务器。而不是在每一个网站使用不同的用户名和密码组合注册的你用你的身份的服务器进行登录你进来。

+1

虽然这可能在理论上回答这个问题,[这将是更可取的](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers/ 8259#8259)在这里包括答案的基本部分,并提供参考链接。 – Benjol 2011-02-24 08:23:40

+1

请至少在此处总结链接文本的内容。如果该链接中断,这个答案也是如此。 – 2011-02-24 08:24:47

+0

链接正在工作并且说明也被添加了! – Seeker 2011-02-25 12:36:42

相关问题