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

熱門文章

Nov 2024【陽明山溫泉】老字號「馬槽花藝村」的溫泉管線已恢復|在木造山景湯屋享受半露天硫磺溫泉

【新北金山】週末的北海岸吃蟹泡湯小旅行|奇峰石溫泉餐廳、巧晏漁坊、獅頭山公園散步、陽明山家新休閒會館、焿子坪、鮮滿樓海鮮料理、馬槽花藝村、醺花鑶鴛鴦鍋

Nov, 2024【新北金山】冷水坑至磺嘴山健行, 欣賞秋天的美景,下山後到陽明山水溫泉會館享受100%白硫磺泉的療癒

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

Dec 2024【苗栗泰安】水雲餐廳溫泉民宿♨️🥢⛰️|水雲三星之橫龍山~騰龍山健行|台中西嶼龍新鮮海鮮古早味餐廳

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

July 2024【台北士林】陽明山彼端的原始秘境|颱風後的鹿角坑生態保護區|循著疊石指引造訪楓林瀑布

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

Mar 12, 2022【重機一日遊】走北橫至宜蘭,經梨山、武嶺下埔里,再走台三線回桃園|16小時的半圈環島

【新北市平溪】106縣道上的隱藏版B級美食~平溪古早味料理~鹹湯圓.薑母油飯(想吃還得看運氣)

文章列表

Contact

名稱

以電子郵件傳送 *

訊息 *