華為帳號服務學習筆記(二):OAuth2.0協議詳解

凌霄科技發表於2021-03-31

    在上一篇文章《華為帳號服務學習筆記(一):什麼是HMS,什麼是華為帳號服務》中已經給大家整理了一下華為帳號服務的使用場景和優勢,接下來我就將帶大家進一步瞭解華為帳號服務涉及的一些基礎知識、接入方法、效率提升工具等。大家有什麼疑問也可以隨時在評論區提。

    要了解華為帳號服務,首先我們需要熟悉2個協議:Oauth2.0和OpenID Connect協議,因為華為帳號的登入方式就是基於這兩個協議來的,不僅僅是華為帳號,微信及其他廠商的帳號也基本基於這兩個協議。本文先介紹Oauth2.0。

一、 一個有趣的問題

    在回答什麼是OAuth2.0前,我先丟擲一個問題:

    我們知道使用者可以透過帳號+密碼的方式獲取自己華為或者微信帳號的詳細資訊,如使用者名稱、郵箱、手機號等,但第三方App,比如下面這款app狂野飆車,使用者使用了華為帳號登入後,這款app就獲得了使用者的華為帳號資訊,那麼它是怎麼獲得這些資訊的呢?

華為帳號服務學習筆記(二):OAuth2.0協議詳解

華為帳號服務學習筆記(二):OAuth2.0協議詳解


    要回答上面這個問題,需要引入一個概念:代理授權;代理授權是一種允許第三方應用訪問使用者資料的方法。有兩種方式:

1、使用者的帳號密碼提供給第三方應用,以便它們可以代表你來登陸帳號並且訪問資料;

2、透過 OAuth 授權第三方應用訪問使用者的資料,而無需提供密碼;

    第一種方式相信沒有使用者會接受,沒有哪個使用者願意把自己的使用者名稱和密碼暴露給其他人。第二種方式就使用到OAuth協議了,它不需要提供使用者的密碼給第三方,第三方也能獲取到需要的資料,這也是為什麼我們需要OAuth的原因。

二、究竟什麼是OAuth2.0?

    OAuth 2.0 是目前最流行的授權機制,用來授權第三方應用,獲取使用者資料。有了OAuth2.0以後,之前的問題就能這樣解決:使用者對第三方應用進行有限授權,第三方應用透過這個有限授權就能到對應帳號伺服器去獲取授權過的資訊。

華為帳號服務學習筆記(二):OAuth2.0協議詳解

OAuth2.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協議詳解

華為帳號服務學習筆記(二):OAuth2.0協議詳解

OAuth2.0協議的基本流程

華為帳號服務學習筆記(二):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儲存在後臺伺服器,透過後臺伺服器與資源和授權伺服器完成互動,前後端分離,非常安全

華為帳號服務學習筆記(二):OAuth2.0協議詳解

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協議詳解

        以上就是我要分享的OAuth2.0內容,希望能給大家的理解帶來益處。接下來我還會分享OpenID Connect協議內容。希望大家持續關注本帳號。

後續筆者會不斷輸出相關領域的優質內容,希望大家持續關注本帳號!

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69997171/viewspace-2766022/,如需轉載,請註明出處,否則將追究法律責任。

相關文章