2010-07-01 65 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