在日常使用各個APP的時候,大家應(yīng)該都或多或少接觸過與“授權(quán)”有關(guān)的場景。大家有沒有想過在不需要輸入密碼賬號的情況下,是怎么實現(xiàn)第三方登錄的呢?本文作者將結(jié)合自己的項目經(jīng)歷來跟大家談?wù)勊赖氖跈?quán)登錄。
談到授權(quán)登錄,相信大家并不陌生,在日常使用各個APP的時候,大家應(yīng)該都或多或少接觸過與“授權(quán)”有關(guān)的場景,比如:進入支付寶或微信中某個子應(yīng)用時會出現(xiàn)的彈窗,這些都屬于授權(quán)登錄的范疇。在支付寶和微信所包含服務(wù)越來越多的情況下,這個功能給我們帶來了極大的便利。
但不知道大家有沒有想過,這種看似很正常、方便、簡單的功能,是怎么做到在我不輸入任何賬戶密碼信息的情況下實現(xiàn)第三方服務(wù)賬戶登錄的,而且在登錄之后里面的購物車、訂單記錄還都全部同步了。而且在第一次授權(quán)成功之后,后面的登錄都是直接完成的。
是因為微信或者支付寶拿到并保存了我們的賬號密碼么?那這個算信息泄露么?
本文我將就自己的項目經(jīng)歷來談一談我所知道的授權(quán)登錄。
二、名稱解釋:什么是授權(quán)登錄?
授權(quán)登錄是指通過一套簡單、安全的交互流程,讓第三方應(yīng)用可以在不知道用戶登錄名和密碼的情況下,獲取到用戶的的對應(yīng)信息,從而實現(xiàn)在第三方應(yīng)用中的對應(yīng)客戶端的登錄并關(guān)聯(lián)第三方平臺賬戶。
也就是說,對于用戶來說,當(dāng)你登錄了一個APP之后,你再使用這個APP上的任何第三方服務(wù),都不需要再手動輸入一遍第三方服務(wù)對應(yīng)的賬號密碼。而且在完成第一次登陸后,接下來的一段時間內(nèi)用戶再使用此服務(wù)都可以實現(xiàn)無感知登錄。
三、需求背景:為什么要做授權(quán)登錄?
(1)縮短用戶操作步驟,降低流失率
手動輸入賬號密碼如果作為常規(guī)的登錄方式,那么在阻斷用戶操作流程的同時,必然也會將一部分用戶趕走,故授權(quán)登錄降低了用戶的操作成本,更容易促進用戶轉(zhuǎn)化的前提。
(2)統(tǒng)一接入規(guī)范,把控登錄方式
因為各應(yīng)用的頁面是由第三方自己開發(fā)的,所以再風(fēng)格樣式、提供服務(wù)等方面的差異,必然會導(dǎo)致各服務(wù)的登錄頁面也會存在著些許差異,例如:在同一個平臺上,有的應(yīng)用支持手機驗證碼登錄、有的支持郵箱登錄、有的甚至還支持其他平臺的賬號登錄(如:微信里面支持支付寶賬號快捷登錄),這其實是不利于整體品牌形象的營造和用戶體驗的統(tǒng)一的。
(3)獲取用戶信息,考慮合規(guī)要求
授權(quán)登錄在為用戶提供便利的同時還能獲取更多的信息(如:昵稱、頭像),并且授權(quán)彈窗上的用戶協(xié)議可以避免合規(guī)性風(fēng)險。
(4)協(xié)議管理方便,快速簽約解約
同意授權(quán)登錄之后等于用戶跟平臺簽訂了一個允許獲取指定信息的協(xié)議,故授權(quán)登錄功能必然會帶來協(xié)議管理功能,通過此功能,用戶可以快速的注銷各服務(wù)的賬號。
四、前端業(yè)務(wù)流程:授權(quán)登錄相關(guān)的業(yè)務(wù)流程
1. 授權(quán)登錄流程
2. 查看用戶授權(quán)協(xié)議
3. 解除協(xié)議流程
五、關(guān)于后端業(yè)務(wù)流程:授權(quán)登錄相關(guān)后臺之間的交互
1. 簡單概括后端交互流程
2. 其中必要的參數(shù)
- code:可以看作第三方要發(fā)起授權(quán)所必須取得的通行證,有了這個通行證,雙方的服務(wù)層才能進行交互。當(dāng)?shù)谌角岸苏{(diào)起授權(quán)彈窗時,由客戶端前端獲得后返回給第三方,第三方拿到code后,可以通過后端之間的交互去申請指令派access_token,有效期很短(可能短于5s)。
- access_token:俗稱指令牌,由客戶端服務(wù)端鑒權(quán)中心根據(jù)code和第三方應(yīng)用信息返回給第三方后端,有了指令牌,第三方就可以申請從客戶端服務(wù)器里獲得用戶信息了,有效期一般較短(如1個小時)。
- refresh_token:用以在access_token過期后,重新刷新指令牌的計時,有效期一般較長(如120天),超過有效期之后,整個授權(quán)登錄過程就要重新來一遍。
- openid:用戶的唯一標(biāo)識,通過openid第三方可以從客戶端服務(wù)器拿到對應(yīng)用戶的賬戶信息,從而將其和自己本身的賬號進行關(guān)聯(lián)。
3. 幾種異常情況
六、部分產(chǎn)品相關(guān)的考慮
1. 數(shù)據(jù)指標(biāo)——注意頁面埋點
2. 產(chǎn)品體驗——部分細節(jié)
分享搭建內(nèi)網(wǎng)服務(wù)器教程
以CentOS7服務(wù)器為例(其它系統(tǒng)比如ubuntu)
服務(wù)器配置:2核4G 固態(tài):120G空間 機械 :1T 臺式主機zhu
一、下載系統(tǒng)鏡像
下載鏈接:https://opsx.alibaba.com/mirror?lang=zh-CN
1.選擇下載os鏡像
2.選擇CentOS7版本
3.虛擬機,安裝的時候可以選擇最輕量級的7(x86_64-NetInstall-1810)版本——我的服務(wù)器屬于獨立的,所有我選擇7(x86_64-DVD-1810)版本
以上下載軟件需要鏡像刻錄到U盤中,我采用UItralSO進行刻錄。
二、鏡像制作
請向微信公眾號發(fā):制作啟動盤,會推送消息給你。
三、安裝CentOS7系統(tǒng)
1.插入我們剛剛準(zhǔn)備的制作U啟動盤(Centos7系統(tǒng))U盤, 主機開機—連續(xù)按住按下鍵盤Del鍵,進入主板設(shè)置boot
2.選擇Hard Drive BBS Priorities界面,選擇Kingston DataTraveler 3.0,在系統(tǒng)Boot Option #1/#2/#3代表系統(tǒng)啟動的方式,默認為#1為電腦的啟動方式
3.選擇對應(yīng)的系統(tǒng)盤,默認采用Kingston DataTraveler 3.0為第一啟動盤,然后就是固態(tài)硬盤120G,機械硬盤排最后。
4.返回到Boot系統(tǒng),并且對應(yīng)的Boot Option #1選擇Kingston DataTraveler 3.0,Boot Option #2選擇固態(tài)硬盤120G
5.設(shè)置完成后,按下鍵盤F10鍵在提示是否保存更改并退出時選擇yes(是)回車退出,OK設(shè)置完成。
該流程依舊不同的電腦,安裝方式類似。
6.系統(tǒng)進入安裝CentOS7,先使用Test thismedia & install CentOS7(測試這個媒體并且安裝CentOS7)
7.以下系統(tǒng)測試界面
8.選擇系統(tǒng)語言,可以安裝多種語音方式,但是默認采用英文,本機安裝為:簡體中文—-點擊右下角的”確認”鍵
9.選擇日期和時間—上海時區(qū)–返回系統(tǒng)設(shè)置界面
10.鍵盤語言:漢語
11.軟件選擇,最小安裝—右邊全選—左上角確認–返回系統(tǒng)設(shè)置界面
12.安裝位置:選擇安裝目標(biāo)位置,本機以固態(tài)120G為主盤,機械盤為副盤,該操作會格式系統(tǒng)內(nèi)的所有數(shù)據(jù),盡量采用有數(shù)據(jù)的硬盤
13.勾選兩個盤,會彈出安裝選項—-選擇回收空間
14.然后彈出回收硬盤空間,出現(xiàn)對應(yīng)的盤,選擇—全部刪除–點擊回收空間—右上角的確認–返回系統(tǒng)設(shè)置界面
15.選擇獲取網(wǎng)絡(luò)和主機名(記住ip地址:192.168.0.102固定的,需要遠程連接時候用到)—打開右上角的開關(guān)–返回系統(tǒng)設(shè)置界面
16.系統(tǒng)直接安裝,并且進入用戶設(shè)置功能
17.選擇root密碼設(shè)置,這個是系統(tǒng)最高權(quán)限的使用者,必須設(shè)置,并且記住密碼,防止忘記密碼。—左上角確認–返回用戶設(shè)置界面
18.創(chuàng)建用戶–該設(shè)置可以創(chuàng)建不同角色的人,但是只能訪問對應(yīng)的目錄,看你如何設(shè)置–返回用戶設(shè)置界面
19.返回操作,系統(tǒng)自動安裝–等待安裝情況。
20.進入操作命令界面
21.采用遠程連接這臺搭建的centos7系統(tǒng)
22.確定后,自動連接到本地服務(wù)器。
以上Centos7為例,該制作啟動盤唯一不同之處在于鏡像不相同,但是操作原理一樣。