華為帳號服務學習筆記(二):OAuth2.0協議詳解
在上一篇文章《華為帳號服務學習筆記(一):什麼是HMS,什麼是華為帳號服務》中已經給大家整理了一下華為帳號服務的使用場景和優勢,接下來我就將帶大家進一步瞭解華為帳號服務涉及的一些基礎知識、接入方法、效率提升工具等。大家有什麼疑問也可以隨時在評論區提。
要了解華為帳號服務,首先我們需要熟悉2個協議:Oauth2.0和OpenID Connect協議,因為華為帳號的登入方式就是基於這兩個協議來的,不僅僅是華為帳號,微信及其他廠商的帳號也基本基於這兩個協議。本文先介紹Oauth2.0。
一、 一個有趣的問題
在回答什麼是OAuth2.0前,我先丟擲一個問題:
我們知道使用者可以透過帳號+密碼的方式獲取自己華為或者微信帳號的詳細資訊,如使用者名稱、郵箱、手機號等,但第三方App,比如下面這款app狂野飆車,使用者使用了華為帳號登入後,這款app就獲得了使用者的華為帳號資訊,那麼它是怎麼獲得這些資訊的呢?
要回答上面這個問題,需要引入一個概念:代理授權;代理授權是一種允許第三方應用訪問使用者資料的方法。有兩種方式:
1、使用者的帳號密碼提供給第三方應用,以便它們可以代表你來登陸帳號並且訪問資料;
2、透過 OAuth 授權第三方應用訪問使用者的資料,而無需提供密碼;
第一種方式相信沒有使用者會接受,沒有哪個使用者願意把自己的使用者名稱和密碼暴露給其他人。第二種方式就使用到OAuth協議了,它不需要提供使用者的密碼給第三方,第三方也能獲取到需要的資料,這也是為什麼我們需要OAuth的原因。
二、究竟什麼是OAuth2.0?
OAuth 2.0 是目前最流行的授權機制,用來授權第三方應用,獲取使用者資料。有了OAuth2.0以後,之前的問題就能這樣解決:使用者對第三方應用進行有限授權,第三方應用透過這個有限授權就能到對應帳號伺服器去獲取授權過的資訊。
OAuth2.0的設計思想:
之前看到過這樣一個比喻,我覺得能非常形象的說明OAuth2.0的設計思想,現在就拿過來用一下,方便大家快速理解。
快遞員與小區門禁系統:
1、每個小區都有門禁系統,輸入密碼可進入小區,只有業主知道密碼
2、快遞員經常進入小區送快遞,快遞員有幾種方式進入小區:
A、業主告訴快遞員門禁密碼,快遞員透過輸入密碼進入
B、業主遠端為快遞員開門
C、為快遞員開闢一條新通道,只用於送快遞到指定地點:
——》在門禁系統中增加“請求授權”按鍵
——》快遞員按下按鈕請求業主授權進入
——》業主同意授權後給快遞員返回一個“有限密碼”
——》快遞員透過輸入這個密碼,可以進入到小區投遞快遞的地點,但不能進入其他地方。
前兩種方式都不是最優的,首先小區密碼擁有很多許可權,給快遞員非常不安全;其次,小區可能有很多門,快遞員每透過一個門業主就需要遠端為他開一次門也很煩;第C種方式是最優的,它的設計思想用於網際網路就是OAuth2.0了。
OAuth2.0協議的相關術語
資源所有者(Resource Owner):擁有客戶端應用程式想要訪問的資料的使用者。
客戶端(Client):想要訪問使用者資料的的應用程式
授權服務端(Authorization Server):透過使用者許可,授權客戶端訪問使用者資料的授權服務端。
資源服務端(Resource Server):儲存客戶端要訪問的資料的系統。在某些情況下,資源服務端和授權服務端是同一個服務端。
訪問令牌(Access Token):訪問令牌是客戶端可用於訪問資源服務端上使用者授權的資料的唯一金鑰。
Scope:授權範圍,用於限制應用程式訪問使用者的哪些資料
OAuth2.0協議的基本流程
Access Token與密碼的異同:
1、Access Token與密碼一樣,是獲取使用者資料的憑證,洩漏AT與洩漏密碼後果一樣
2、Access Token是短期的,到期自動失效,使用者無法修改;密碼一般是長期有效,不修改不會變化
3、Access Token可以被資料所有者撤銷,撤銷後會立即生效,而密碼一般不允許被人撤銷
4、Access Token有許可權範圍即Scope,可以指定持有人只能做什麼事情,而持有密碼的人擁有的是完整許可權,可以做所有的事情
Access Token的設計可以讓第三方應用獲得相應許可權,又隨時可控,不會危及系統安全。
OAuth 2.0的四種方式
這裡主要介紹第一種。
1、授權碼(authorization-code)
指客戶端先獲取一個授權碼(Code),再用授權碼換取Access Token;
使用場景:客戶端有自己的後臺伺服器
特點:授權碼透過前端傳遞,而AT儲存在後臺伺服器,透過後臺伺服器與資源和授權伺服器完成互動,前後端分離,非常安全
2、隱藏式
使用場景:純前端應用,沒有後臺伺服器
特點:沒有授權碼,直接給前端頒發AT,AT儲存在前端,不是很安全,適用於安全要求不高的場景
3、密碼式
使用場景:高度信任某應用,並且無法採用其他授權方式的情況
特點:使用者直接將使用者名稱和密碼告訴第三方應用,第三方應用使用你的密碼去申請令牌
4、憑證式
使用場景:沒有前端的命令列應用
特點:在命令列下請求令牌,直接信任第三方
Access Token過期問題
AT是有期限的,AT過期後就需要重新獲取。
兩種方式:
1、按照之前的流程重新獲取一遍AT,這種體驗不好;
2、OAuth2.0給出的方式是:在返回Access Token的同時返回一個Refresh Token,當AT(Access Token)過期以後,可以用RT(Refresh Token)去重新獲取AT。
以上就是我要分享的OAuth2.0內容,希望能給大家的理解帶來益處。接下來我還會分享OpenID Connect協議內容。希望大家持續關注本帳號。
後續筆者會不斷輸出相關領域的優質內容,希望大家持續關注本帳號!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69997171/viewspace-2766022/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 華為帳號服務學習筆記(五):OpenID Connect協議詳解筆記協議
- 華為帳號服務學習筆記(一):什麼是HMS,什麼是華為帳號服務筆記
- 華為帳號服務學習筆記(四):Authorization Code模式服務端開發筆記模式服務端
- 【Insights直播】華為帳號服務,打造全場景安全帳號體系
- Insights直播回顧| 華為帳號服務,打造全場景安全帳號體系
- Raft協議學習筆記Raft協議筆記
- Raft 協議學習筆記Raft協議筆記
- 學習筆記 - DNS協議筆記DNS協議
- IP協議學習筆記協議筆記
- Internet安全協議 學習筆記協議筆記
- OAuth 2.0 協議學習筆記OAuth協議筆記
- 【接入指南】一個Demo帶你玩轉華為帳號服務
- OAuth2.0協議入門(二):OAuth2.0授權服務端從設計到實現OAuth協議服務端
- 華為帳號多端協同,打造美好互聯生活
- 【FAQ】接入華為帳號服務過程中常見問題總結
- 華為帳號服務助力應用運營和使用者轉化
- CAN匯流排協議 學習筆記協議筆記
- git reset 命令詳解(二)—— Git 學習筆記 08Git筆記
- 常見協議埠號對應 + 重要協議詳解協議
- Kubernetes學習筆記(四):服務筆記
- 詳解華為雲基因容器服務GCSGC
- 華為帳號服務升級,助力應用快速驗證使用者身份
- 華為帳號服務升級,提供通用簡訊驗證碼讀取能力
- MQTT協議從服務端到客戶端詳解MQQT協議服務端客戶端
- 【FAQ】華為帳號服務報錯 907135701的常見原因總結和解決方法
- Go學習筆記-GMP詳解Go筆記
- Consul 學習筆記-服務註冊筆記
- TCP/IP學習筆記之協議和郵件TCP筆記協議
- JVM學習筆記(3)---OutOfMemory詳解JVM筆記
- springCloud學習筆記2(服務發現)SpringGCCloud筆記
- ZooKeeper一致性協議ZAB學習筆記協議筆記
- 學習筆記-Verilog實現IIC匯流排協議筆記協議
- 計算機網路學習筆記(10) TCP/IP協議棧 之TELNET協議計算機網路筆記TCP協議
- VC++深入詳解--之複習筆記(二)C++筆記
- golang學習筆記(二)—— 深入golang中的協程Golang筆記
- 華為雲簡訊服務教你用C++實現Smgp協議C++協議
- MIT 6.824 學習筆記(一)--- RPC 詳解MIT筆記RPC
- Nginx變數詳解(學習筆記十九)Nginx變數筆記