2010-07-08 73 views
12

我有一個現有的網站,我想變成一個OpenID提供程序。我所有的用戶帳戶都存儲在一個MySQL表中。在PHP中創建一個OpenID提供程序

我想既然一個OpenID表示爲一個URL,我會做這樣的事情:http://login.mydomain.com/username

我設置一個子域,並創建了所有重定向URL到/login.php?username一個htaccess = [用戶名]

我看到它的方式,並告訴我如果我錯了,有人去讓我們說StackOverflow,他們輸入http://login.mydomain.com/myUsername。他們到我的服務器上尋求密碼的頁面(因爲我已經知道他們的用戶名),我檢查它是否匹配,並返回密鑰?

在線人推薦使用Zend_OpenId_Provider。我一直在閱讀他們的文檔(http://framework.zend.com/manual/en/zend.openid.provider.html),但我覺得它很混亂。他們沒有真實世界的例子,用戶登錄/密碼存儲在數據庫中。

我也見過php-open-id(http://github.com/openid/php-openid),但沒有幫助。

這似乎是一件很常見的事情。有沒有教程或我可以輕易適應的例子?

+1

我想要舉一些這方面的例子,我正在努力成爲OpenID Provider,我們可以合作。我打算使用Janrain OpenID Enabled:http://www.janrain.com/openid-enabled,因爲Zend已經失敗了我的一些要求。我恐怕你必須閱讀源代碼... – jayarjo 2010-07-12 07:02:50

+0

我打開openid啓用或任何其他。很難找到幫助成爲提供者。我爲這個問題設置了一個小小的獎勵。也許它會幫助...爲這個問題投票。 – 2010-07-20 21:06:45

+0

Zends官方文檔的質量很差。他們很難提供真實世界的例子。 – jantimon 2010-07-21 05:59:13

回答

8

正如你用zend-framework標記了這個問題,我想你想用ZF來實現它。

看那Zend_OpenId_Provider

public function __construct($loginUrl = null, 
          $trustUrl = null, 
          Zend_OpenId_Provider_User $user = null, 
          Zend_OpenId_Provider_Storage $storage = null, 
          $sessionTtl = 3600) 

的一個重要的構造是$storage參數。

http://framework.zend.com/manual/en/zend.openid.provider.html的示例中,它們不傳遞任何參數。這意味着默認使用Zend_OpenId_Provider_Storage_File供應商。再次,這個按默認值存儲在TEMP目錄的文件中(Linux上的/tmp)。

基本上這個例子應該是完整的功能。你可以通過調用$server->register($someid, $somepassword);

註冊一些更多的用戶,但因爲它存儲每個默認帳戶在臨時目錄下,應該通過一些替換該行像這樣(如果它是好的,在文件存儲賬戶):

$dir = "/var/lib/myopenidusers"; 
mkdir($dir); 
$server = new Zend_OpenId_Provider(null, null, null, new Zend_OpenId_Provider_Storage($dir)); 

現在,如果您願意將您的用戶存儲在數據庫中,則必須實施您自己的Provider_Storage。

看看抽象類abstract class Zend_OpenId_Provider_Storage。這是你必須實施的方法。

+0

請注意,我的數據庫中已有所有用戶。我是否還需要「登記」他們? – 2010-07-26 17:02:06

+0

看來我必須寫下所有的東西。我只想通過我的mysql表完成它的「登錄」部分。在這裏,我需要從頭開始實現所有代碼,其中大部分我甚至不明白... – 2010-07-27 00:06:58

1

您可以嘗試JanRain Engage(http://www.janrain.com/products/engage)。它是OpenID與Web應用程序集成的簡化界面。免費版應該足夠適用於所有實際目的。

+1

開始Engage是接受OpenId,而不是提供者。你可能會想到FEDERATE,這不是免費的。 – 2010-07-26 17:03:56

0

我們使用:http://source.keyboard-monkeys.org/projects/show/communityid

從他們的網站:

「社區-ID是在PHP的OpenID的實現是OpenID的2.0兼容社區的ID是建立以100%的開源軟件,這是。用戶可以跟蹤他們的可信站點並進行管理,登錄到C-ID可以是用戶名/密碼,也可以是帶有Yubikey的一次性密碼,用戶可以擁有多個配置文件,如私人或商業聯繫信息。

對於社區ID管理員統計信息可用於跟蹤新用戶註冊,每天授權用戶數或可信站點數。管理員可以在維護模式下設置網站或向所有註冊用戶發送電子郵件。

對於用戶數據和身份驗證,admin可以選擇默認數據庫存儲或連接到LDAP服務器。目前確認支持的是OpenLDAP。其他LDAP服務器也應該很好地工作。」

+0

我試圖設置這個,我與我和另外3個人經營一家小企業,我們運行4個網站,並希望SSO,我已經設置了SSO部分,但不知道如何轉發其他網站以登錄有了這個 :/ – MRVDOG 2014-05-07 01:46:50

0

SimpleID是一個小而漂亮的使用+設置OpenID提供商的軟件。我用它自己,沒什麼可抱怨的。

2

我想在這裏列出,社區ID一切, simplean,janrain等等,以及所有那些自稱爲OpenID Wiki/Libraries的提供者,但都失敗了。然後我偶然發現了Prairie,並在大約一個小時內運行了它。在index.php和login.php中更改了一些查詢我正在使用它來對付我的用戶表

相關問題