本文通俗易懂地剖析用戶授權的設計原理和四種授權模式,重點介紹授權碼登錄模式,适合閱讀的人群:開放平台/第三方合作的産品經理,初入職場的産品經理。
1. 應用場景
我們每個人都遇到過授權登錄的環節,授權登錄的應用無孔不入,可能你是在授權應用權限,或是授權賬戶登錄,或是授權個人信息。
我們常見的應用場景一般有以下:
- 新安裝應用:授權獲取存儲空間,設備信息等(手機原生彈窗)
- 支付寶授權登錄淘寶:授權使用支付賬戶登錄淘寶APP(淘寶原生頁面)
- 微信打開美團外賣:授權獲取你的頭像和地理位置(微信原生彈窗)
因而授權登錄是應用間交互的重要且廣泛的步驟,深入了解過其中的原理很有必要。
2. 授權登錄是什麼?以美團外賣授權獲取你的頭像和地理位置為例:
- 頭像和地理位置屬于你的個人信息,如需要傳輸,必須經得本人的同意,法律不允許默認傳輸。
- 授權登錄是經得資源所有者(亦即是用戶)同意,服務提供商(亦即是微信,他為你提供授權服務)提供授權服務和應用方(他來使用你的授權)使用授權的過程。
字面意思就是如下圖流程:
值得關注的是第3步和第4步:當你在授權的過程中,實則是你和微信的直接交互,與美團外賣小程序無關。
亦即是:你是跟微信同意授權,也是微信接收到你的“同意”的指令,即使在網站用微信登錄也是如此,如豆瓣登錄,需要微信掃描二維碼,确保授權動作保留和發生在微信自己的環境内。
3. 授權登錄的模式那麼從形式來說,授權登錄可以分為靜默授權和手動授權兩種模式:
4. OAuth2原理及剖析
- 靜默授權:一般是用于獲取一些類似于用戶ID的信息,比如每個用戶在微信的ID被稱為openid,這種ID隻是用戶的唯一身份認證(相當于編号),不包含個人信息,應用獲取openid并不能分析出你的手機号和身份證号這些個人信息。顯然,很多用戶都不知道openid是什麼,總不能彈個彈窗問用戶“你是否同意傳輸openid”吧。因而這類傳輸,用戶是無感的,用戶隻需訪問了某個頁面,後台會向微信請求拿到你的openid。
- 手動授權:這種亦即是我們上文提到的用戶場景,這類型場景需要獲取的信息是你的個人信息,比如頭像,昵稱,手機号和地址等等。這些個人信息是必須經過用戶手動點擊同意的。
以上第2點是授權的基本簡化,本節是更重點介紹OAuth2的系統鍊路流程(無論是靜默或是手動,系統鍊路一緻,隻是形式的區分)。目前市面上涉及授權,權限申請的業務均通過OAuth2的方法進行設計。
OAuth2具體可以分為以下四種:
- 授權碼模式(authorization code)【重點】
- 簡化模式(implicit)
- 密碼模式(resource owner password credentials)
- 客戶端模式(client credentials)
4.1 授權碼模式
其中最重要的就是第一種授權碼模式,接下來我以企業微信授權碼方法做解析,其流程圖非常清晰。
例子講解:
場景:該身份授權是用戶在企業微信使用第三方應用時拉起授權頁面的流程。類似于你在微信打開餓了麼小程序。
系統交互的步驟:
- 用戶在企業微信打開一個A應用。此時A應用通過靜默推送獲取到用戶的userid,發現這個用戶沒有頭像和昵稱信息在A應用的數據庫。
- 此時,A應用調用企業微信的OAuth認證鍊接,這個鍊接要帶上企業ID(表明應用方),權限獲取範圍(頭像 昵稱),标記本次授權的編号(state)和授權完跳轉的地址,做好鍊接之後,向微信發送過去。
- 企業微信收到請求後,校驗企業ID和授權跳轉的地址是否對應。如果驗證通過,企業微信會給A應用一個令牌(code),并在前端打開企業微信的授權頁面(該頁面由企業微信管理)。
- 用戶點擊授權了之後,企業微信可以利用code和state向企業微信請求用戶信息API,獲得用戶token,最終獲得指定用戶信息。
- 同時用戶點擊授權後,企業微信關閉授權頁,并跳轉到A應用在第2步提供的跳轉地址。
4.2 簡化模式
請記住第一個模式中的第(1)步和第(2)步都需要A應用處理,簡化模式就是簡化了第(2)步。
以下在微信的場景僅用于舉例:
- 用戶點擊應用入口之後,微信直接讓用戶是否同意授權(授權的内容和觸發時間提前配置好),用戶點擊同意。
- 用戶同意後,跳轉到該應用在後台預留的地址,并且微信把訪問令牌直接告訴應用。
- 應用利用訪問令牌找微信獲取用戶信息,完成。
此處你有沒有發現,前面授權的過程并不需要應用本身參與,這個就是比授權碼模式簡化的地方。但這種模式不支持用戶令牌的更新,也就是用戶第一次授權過期了之後,下一次又需要重新手動授權。
4.3 密碼模式
這種模式很直接,相當于你把你微信的賬戶密碼告訴餓了麼,餓了麼利用你的賬戶密碼去獲取信息。這種方式極其不安全,用戶的賬戶信息随時會被外洩。
4.4 客戶端模式
這種其實不屬于授權,實則就是兩個應用間直接進行信息傳輸,與用戶無關。
5. 總結
- 授權分為靜默授權和手動授權,一般出現在打開應用登錄的環節,應用廣泛。
- 授權的組件或頁面必須在擁有數據的應用中,這樣才能确保用戶在授權頁上同意協議,清晰看到傳輸的數據範圍,以及确保用戶親手同意授權。
- 授權分為四個模式,其中授權碼模式是應用最廣泛,最重要的模式。
- 授權碼模式亦即是A應用拼接企業參數向企業微信請求打開授權頁面,獲取用戶授權碼code,再利用code獲得用戶的token,最終獲取用戶信息。
相關閱讀
API接口入門(一):讀懂API接口文檔
API接口入門(一):讀懂API接口文檔
作者:就是愛睡覺,電商和金融業行業的産品,以TO B業務為主,文章是用于記錄自己在産品工作的思考和想法,希望有想法的小夥伴共同交流。
本文由 @就是愛睡覺 原創發布于人人都是産品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!