Integrating OpenID & Clickpass Authentication in your Rails Application

OpenID is a service, framework, and protocol that is revolutionizing the realm of user authentication and identity services. Started in 2004 by Brad Fitzpatrick, OpenID is now a mature framework supported by major Internet organizations such as AOL, Google, IBM, Microsoft, VeriSign, and Yahoo. It offers a distributed, reliable, and open way for web sites to authenticate their users and saves web developers from the need to write yet another piece of authentication code.

要在每個使用過的網站建立新的帳號,感到疲累嗎?您總是避免上新網站,是否因為每個網站都要求您建立帳號和密碼? 您是否在電腦螢幕旁貼了一堆密碼提示?

OpenID 是一種開放技術標準,可解決所有這類問題。透過 OpenID 技術,您可以使用您的 OpenID 帳號隨意在不同的網站上登入或註冊!

在實作這個功能之前,我們需要安裝ruby-openid這個Ruby Gem以及acts_as_authenticated和restful_authentication這兩個Rails Plugin。

接下來我們要先建立openid的資料表並在現有的Users資料表中添加一個identity_url欄位。建立一個遷移檔來新增資料表,然後編輯這個遷移檔:

$ ruby script/generate migration CreateOpenidAuthentication

接下來再來建立一個UserOpenid模型,然後編輯這個新的遷移檔:

然後編輯UserOpenid Model:

接下來編輯#{RAILS_ROOT}/config/routes.rb,設定相關的路徑映射:

註:這裡面的controller必須視你自己的project來作設定,若配置錯誤將無法連線到OpenID Server端取得認證。

接下來建立一個OpenidsController並編輯內容:

$ ruby script/generate controller Openids

再來我們需要修改AccountController,在裡面添加一些處理OpenID登入的方法:

接下來編輯app/views/account/openid_login.html.erb視圖,讓使用者可以透過OpenID登入網站,添加下面的內容:

再來編輯app/views/openid/new.html.erb視圖,這是讓使用者添加OpenID帳號的頁面:

最後在#{RAILS_ROOT}/app/views/users/show視圖中添加下面的內容,用來顯示使用者已認證過的OpenID帳號:

現在使用者已經可以透過OpenID帳號來登入網站,接下來我們還可以使用Id Selector和Clickpass的服務來擴充我們的OpenID登入功能。首先我們要到 https://www.idselector.com/ 去使用OpenID申請一個帳號,然後只要將代碼貼到OpeniD的登入頁面即可,這裡我將下面的代碼貼到Application Layout中:






再來我們可以為Rails應用程式添加Clickpass登入功能,首先我們需要到 http://www.clickpass.com/ 申請帳號,然後切換到 Developer 控制台,輸入網站資料:


再來我們需要設定 OpenID 負責新增帳號的位置:

1. trust root 輸入你的網站網址
2. begin_openid_login 輸入http://你的網址/account/openid_authenticate 這個路徑
3. OpenID parameter label 輸入 openid_url
4. submission method 選擇 GET 方法


儲存設定之後,就可以把它提供的 button 語法貼到我們的#{RAILS_ROOT}/app/views/account/openid_login.html.erb 視圖裡面了。


再來我們需要設定 OpenID 負責整合帳號的位置:

這裡的 begin_add_openid_to_user URL 我們要輸入config/routes.rb檔案裡面所設定的http://你的網址/users/add_openid路徑,而 user_id label 只要輸入 Username 即可。另外底下的 callback url 也要設定為 http://你的網址/users/add_openid。

儲存設定以後,再將下面顯示的 button 語法貼到 app/views/openid/new.html.erb 視圖中;如此一來就完成 Clickpass 的整合了!

這是二年前做的東西了,以上的實作過程都是用我自己的Rails Project作為例子,概念僅供參考,若有需要請依照你自己的專案視圖作相關的配置。(OpenID登入可以在localhost作測試,Clickpass則需要連線到相對應的網域名稱才能作登入測試)。

下面是一些 OpenID 的相關資源 :

OpenID 網站

Yahoo! OpenID

OpenID for Rails

8 OpenID Resources for Rails Developers

Railscasts - OpenID Authentication

Authlogic and OpenID on Rails

OpenID and Rails: Authentication 2.0

熱門文章

Oct 2024【烏來福山】秋田犬散步/大羅蘭溪古圳步道/蝴蝶公園景觀橋/信賢步道/烏來瀑布

Sep 2024【桃園龜山】大棟山405高地散步(視野遼闊可遠眺大台北盆地,還能欣賞百萬夜景的好地方)

Oct 2024【台北北投】陽明山的小百岳|夢幻湖~七星山東峰&主峰O型走|冷水坑~絹絲瀑布~擎天岡健行|大屯山主峰步道健行

Sep, 2021【苗栗南庄】蓬萊林道Off Road小試|雨後很爛很濕滑|二傳低底盤車勿輕易嘗試

Oct 21~24, 2023【晚秋の贅沢な山旅 PART②】黒部峽谷♡下之廊下|日本北阿爾卑斯山秘境健行+野營+秘湯溫泉 DAY 1(黒部水壩〜下之廊下〜阿曾原溫泉)

Feb, 2024【台中西區】桃太郎日本料理|隱身巷弄裡的39年老字號無菜單料理|食材新鮮、自然美味

Oct 2024【台北北投】陽明山|颱風後滿水位的向天池|清天宮~向天池~向天山~面天山P型走

【美國加州】此生必去超美風景!加州一號公路自駕遊~Half Moon Bay、17 Mile Drive、Bixby Greek Bridge、Big Sur、McWay Falls、Elephant Seal Rookery

Sep 2024 晚夏的黑部源流4泊5日山旅 PART ⑤【溪流登攀&溫泉三昧】赤木沢~五郎沢~祖父沢遡行&雲ノ平~高天原~裏銀座縱走(享受高天原溫泉)

Oct 2024【基隆中山】球子山燈塔散步|仙洞巖山腳下的仙洞小吃|廣東汕頭牛肉店~傳香流籠頭70年

文章列表

Contact

名稱

以電子郵件傳送 *

訊息 *