最近很紅的一個 Yahoo API:Browser-Based Authentication,這是目前蠻多網站開始支援的認證之一,在 XDite 網站看到他們去參加 Yahoo Open Hack Day 的參賽作品:「和多繽紛樂」XDite 網站說明,裡面就有提供 OpenID 以及 Yahoo BBAuth 登入方式,等於是說目前你有 Yahoo 帳號或者是 OpenID 的帳號都可以直接進去 和多繽紛樂 做登入動作,這對於有使用者不使用註冊這麼多網站,也記太多帳號密碼而煩惱,而 Browser-Based Authentication 也提供了 Single Sign-On (SSO) 給大家使用,底下是大概講解一下 Yahoo BBAuth 是如何運作:
上面那張圖大概就可以看了很清楚,首先要登入你的網站的時候,這時候你就可以產生一個 Yahoo 登入網址,然後把使用者轉向到 Yahoo 認證的網頁,然後經過雅虎認證之後,他會在把網頁導向你所想要的網址來進行認證,當然雅虎只提供認證部份,他不提供使用者的任何資料,所以認證成功,雅虎只會給您 hash 的一個值,然後你必須把這個值存到資料庫裡面,以便下次在進行認證的時候可以使用,所以基本上 Yahoo 只有幫忙認證部份而已喔。 其實要使用這個功能相當方便,
BBAuth 這個網站就已經有提供程式碼現成的給您使用修改了,首先當然你要先對你的網站給雅虎做認證用的: 1. 到這網頁來進行註冊的動作:點我 大家看到這個圖片,大概知道怎麼填了吧 Authentication method:這個溝選 Browser Based Authentication Web Application URL:這個填你的網站網址 http://XXX.XXX.XXX.XXX/ 即可 BBAuth Success URL:這個就是要填寫當雅虎認證好之後,他會導向哪一個網址,這個確實填好喔~ 接下來就是按下一步了:會出現 Domain Confirmation 認證 他意思是要你放一個檔案在根目錄:現在是要放 ydn8t9ZpE.html,然後這個檔案裡面寫上底下的字:
# a we are now civil war engaged in testing great 這樣再進行確認就可以完成了,然後進到下面了: 這樣大致上就成功了,那再來可以到 Yahoo BBAuth 中文官方網站,裡面有提供 Quickstart Package here,這裡面提供了程式碼,相當完整,都幫您寫好了喔
// test.php -- Test Yahoo! Browser-Based Authentication // A simple auth exmaple. // Author: Jason Levitt // Date: November 20th, 2006 // Version 1.0 // // Edit these. Change the values to your Application ID and Secret // 這裡就填入剛剛申請的 appid 跟 secret define("APPID", 'ULAxDezIkY3iAUOsWxxxxxxxxxxxxxxxxxx'); define("SECRET", 'adff9f0b072cb159d4exxxxxxxxxxxx'); // Include the proper class file // 確定目前系統的 php 版本,分別 include 不同的 class 檔 $v = phpversion(); if ($v[0] == '4') { include("includes/ybrowserauth.class.php4"); } elseif ($v[0] == '5') { include("includes/ybrowserauth.class.php5"); } else { die('Error: could not find the bbauth PHP class file.'); } // 進行認證的 function function CreateContent() { $authObj = new YBrowserAuth(APPID, SECRET); // If Yahoo! isn't sending the token, then we aren't coming back from an // authentication attempt // 雅虎認證靠得是這個 token 如果亂改就不能認證了 if (empty($_GET["token"])) { // You can send some data along with the authentication request // In this case, the data is the string 'some_application_data' // 你可以傳遞參數寫在 some_application_data 這個欄位 echo 'You have not signed on using BBauth yet大致上這樣就可以了,當然這是他們給的範例,如果搭配網站,有兩種方式,一種就是註冊網站,另一種就是利用 yahoo 的認證進入,其實現在網站提供這個都還不賴啦,很方便,又安全。
'; echo 'Click here to authorize'; return; } // Validate the sig if ($authObj->validate_sig()) { echo 'BBauth authentication Successful
'; // 回傳 userhash 值,來達到認證,當然必須寫回資料,等待下次的認證使用 echo 'The user hash is: '.$authObj->userhash.'
'; echo ' appdata value is: '. $authObj->appdata . '
'; } else { die('BBauth authentication Failed
Possible error msg is in $sig_validation_error:
'. $authObj->sig_validation_error); } return; }
See also
- 來聊聊 PHP & JavaScript & CSS 的 Coding Style
- 為什麼我選擇使用 Laravel Framework?
- OpenSSH 安全性漏洞 CVE-2016-0777 and CVE-2016-0778
- Laravel 搭配 Google, Facebook, Twitter 第三方 OAuth 認證
- 將 wordpress 強制使用 SSL 連線
- PHP 7 vs HHVM Benchmark 比較
- Laravel 50 個小技巧 + Laravel 5.2 新功能
- Laravel Homestead 支援 MySQL 5.7 和 Node 5.0
- PHP-FIG 新網站
- Laravel Homestead 支援 PHP 7