OAuth 白話簡明教程 3.客戶端模式(Client Credentials)


轉自:http://www.cftea.com/c/2016/11/6704.asp

客戶端模式(Client Credentials),客戶端授權模式

客戶端模式,在我看來,並不是 OAuth 的初衷。客戶端模式要解決什么樣的問題呢?

舉例:有一個服務商提供了很多資源,天氣、股票、火車時刻……如果這個服務商大方點,人人都可以抓取這些資源,也簡單了,可是這個服務商要采用認證機制,只有認證了的第三方應用才可以使用這些資源。

所以這個服務商做了一個授權服務器,第三方應用紛紛在這上面注冊,拿到了各自的 app_id、app_secret。按理說第三方應用在取天氣時把 app_id、app_secret 傳給天氣服務器,然后天氣服務器向授權服務器驗證 app_id、app_secret,驗證成功就返回天氣,也能實現需求。

但是,這太簡單了,怎么能夠對得起人家高大上的平台呢?人家要整就要過度設計,簡單問題就要復雜化。所以有了 OAuth 的客戶端模式。

string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + HttpUtility.UrlEncode(_appid) + "&secret=" + HttpUtility.UrlEncode(_appSecret);
WebClient wc = new WebClient();
string jsonString = wc.DownloadString(url);

上面是微信獲取 access_token 的 C# 代碼,非常簡單就拿到了。

  • 第一行,構建 URL,傳入 app_id 和 app_secret。
  • 第二行、第三行,用 WebClient 獲取返回結果。
  • 然后就解析這個 JSON 字符串吧,就取到 access_token 了,相關技術:C# 中處理 JSON
  • 最后就憑這個 access_token 去使用資源服務器的服務吧。(並不是直接憑 app_id、app_secret 去使用資源服務器的服務的,中間隔了個 access_token,這就是我前面說的簡單問題復雜化,當然大平台考慮更細的安全性,復雜化還是有必要的。)

發現沒,到這里都在提第三方應用、授權服務器、資源服務器(上面提到的天氣服務器就是一個資源服務器),並沒有提用戶,這就是 OAuth 的客戶端模式。

可以看出客戶端模式完全就是授權碼模式的下半部分,也就是省去用戶登錄嘛,其他大同小異。

所以,不作介紹了,反正說得再詳細,各大公司也不一定是完全遵照這個來的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM