關(guān)于網(wǎng)站注冊(cè)登錄-無密碼登錄
大部分網(wǎng)站,都要求用戶登錄。
常見的做法,是讓用戶注冊(cè)一個(gè)賬戶。
這種做法并不讓人滿意。
對(duì)于用戶來說,每個(gè)網(wǎng)站必須記住一個(gè)密碼,非常麻煩;對(duì)于開發(fā)者來說,必須承擔(dān)保護(hù)密碼的責(zé)任,一旦密碼泄漏,對(duì)網(wǎng)站的業(yè)務(wù)和信譽(yù)都是巨大打擊。
所以,很早以前,人們就開始設(shè)想”無密碼登錄”(password-less login)。這對(duì)用戶和網(wǎng)站,都將是極大的減負(fù)。
本文先回顧”無密碼登錄”的幾種常見做法,然后探討一種最簡(jiǎn)單的實(shí)現(xiàn)。
一、OpenID
OpenID是最早提出的一種無密碼登錄。
它的設(shè)想是這樣的:互聯(lián)網(wǎng)上每一個(gè)網(wǎng)址(URL),都指向一個(gè)獨(dú)一無二的網(wǎng)頁,這說明網(wǎng)址具有唯一性。因此,可以用網(wǎng)址來標(biāo)識(shí)用戶。
所以,使用OpenID的網(wǎng)站,不要求用戶輸入”用戶名”,而要求用戶輸入一個(gè)代表其身份的網(wǎng)址。然后,向該網(wǎng)址進(jìn)行求證,如果得到證實(shí),就允許用戶登錄,從而實(shí)現(xiàn)”無密碼登錄”。
OpenID有兩個(gè)很大的缺點(diǎn):一是需要服務(wù)器端支持,二是使用網(wǎng)址表示身份,違背直覺,普通用戶難以理解。因此,始終無法得到推廣。
二、第三方賬戶
OpenID的實(shí)質(zhì),是讓第三方網(wǎng)站認(rèn)證用戶身份。那么很顯然,這等同于用戶在第三方網(wǎng)站登錄。
因此,可以直接告訴用戶,使用第三方帳號(hào)登錄(前提是對(duì)方支持OpenID)。
這樣做的優(yōu)點(diǎn)是比較直觀,用戶容易接受;缺點(diǎn)是自身的業(yè)務(wù),從此多多少少要依賴第三方網(wǎng)站。比如,現(xiàn)在很多網(wǎng)站使用Facebook帳號(hào)登錄,一旦Facebook出現(xiàn)故障,這些網(wǎng)站都會(huì)受到影響。
三、Persona
去年,Mozilla提出了Persona方案,號(hào)稱是無密碼登錄的終極解決方案。
它與OpenID異曲同工。后者用網(wǎng)址標(biāo)識(shí)用戶,它用Email標(biāo)識(shí)用戶。用戶鍵入Email地址以后,網(wǎng)站向Email服務(wù)器請(qǐng)求認(rèn)證。
雖然這種方案還處在推廣期,效果有待觀察。但是,我目前不太看好它。一則,它的技術(shù)要求和流程,比OpenID更復(fù)雜,無法用一句話講清楚;二則,它要求服務(wù)器端支持,很難想象世界上大部分Email服務(wù)器都會(huì)部署Persona代碼。
四、OAuth
OAuth協(xié)議其實(shí)與”第三方帳戶”是一回事。
“第三方賬戶”是第三方網(wǎng)站提供用戶身份認(rèn)證,屬于”認(rèn)證”服務(wù)(authentication);OAuth則是更進(jìn)一步,第三方網(wǎng)站允許你直接操作它的用戶數(shù)據(jù),屬于”授權(quán)”服務(wù)(authorization)。
因?yàn)樯婕暗接脩魯?shù)據(jù)的改變,所以O(shè)Auth認(rèn)證比Openid認(rèn)證要求更嚴(yán)格。通常,只有針對(duì)某個(gè)第三方網(wǎng)站的外部服務(wù),才需要用到OAuth;如果只是單純地區(qū)分用戶身份,其實(shí)沒必要用它。
五、Email一次性登錄
上面四種登錄方法,是目前主流的”無密碼登錄”。下面,我想介紹一種最簡(jiǎn)單的實(shí)現(xiàn),它是美國(guó)程序員Ben Brown在今年7月份提出來的。
他的做法很簡(jiǎn)單。用戶登錄的時(shí)候,只顯示一個(gè)Email地址輸入框。
用戶輸入Email地址以后,網(wǎng)站就向該地址發(fā)出一封郵件,里面包含了一個(gè)登錄鏈接。用戶點(diǎn)擊這個(gè)鏈接,就證明他/她確實(shí)是這個(gè)郵箱的主人,身份有效,從而實(shí)現(xiàn)登錄。
登錄鏈接只在一段時(shí)間內(nèi)有效,但是可以通過cookie,讓用戶長(zhǎng)時(shí)間處在登錄狀態(tài)。如果cookie失效,則重新向用戶郵箱發(fā)出另一個(gè)登錄鏈接即可。
由于整個(gè)認(rèn)證過程,都通過電子郵件完成,徹底實(shí)現(xiàn)”無密碼登錄”,而且操作流程很自然,易于理解。更重要的是,它使用現(xiàn)有的Email協(xié)議,不需要服務(wù)器端部署新的代碼,具有最好的兼容性。
主要缺點(diǎn)是,它需要用戶額外查看一次郵箱,稍顯麻煩;它也不適合那種用戶無法打開Email的場(chǎng)合,比如在朋友家中上網(wǎng)。因此,使用它的網(wǎng)站,還必須部署備用的登錄方式。
總的來說,我覺得這是一個(gè)簡(jiǎn)單易行的好方法,以后做網(wǎng)站的時(shí)候,打算嘗試一下。
想聽聽大家的意見,你覺得這種方法可行嗎?
本文來源:阮一峰的網(wǎng)絡(luò)日志
- 目前還沒評(píng)論,等你發(fā)揮!