基於SpringBoot的通用化的第三方登陸實現
標簽(空格分隔): 未分類
通俗的例子解釋OAuth和OpenID的區別
現在很多網站都可以用第三方的賬號登陸,比如,現在我要登錄淘寶買東西,而如果我沒有淘寶的賬號,我也可以用微博的賬號登錄,這個微博賬號就是第三方賬號了。
OpenID強調 驗證 authentication,而OAuth強調 授權 authorization。 驗證就是說“我”是不是(微博用戶),而授權是說“淘寶”可不可以,而可不可以的前提則是“我”是不是。
過程大概是這樣:
我點開微博登錄的鏈接,淘寶就跳到微博登錄頁面,問我你是不是那個微博用戶,是的話你用你的賬號密碼去登錄,你先去給微博驗明正身,成功的話再來找我
好啦,我屁顛屁顛輸入賬號跟密碼,如果可以登錄說明我這個身份是對的,通過了微博的驗證后微博就告訴淘寶說,沒錯沒錯,我家里確實有么這個家伙
上面這些都是OpenID的責任,而且OpenID也只做這件事,就是前面說的是不是
然后呢,淘寶就說好好,有你微博驗證我放心,於是就讓我通過了
等等,這時淘寶只知道微博他們家有我存在,但是並不知道我在微博家里叫什么名,做過什么事,其實淘寶也不應該知道,對吧,要是知道我在微博家老是到處舉報別人賣假貨坑顧客什么的,那我讓你進我大淘寶豈不是會壞了我的大事,你丫是來搗亂的吧(至於淘寶為什么會這么想,哼哼~你們懂的)
所以,淘寶通常就會做一件事,什么事呢?這時就輪到OAuth出場了,淘寶在把我交給微博驗明正身的時候其實還“忽悠”了我,明明只是驗個身份,卻問我要不要把我在微博家叫什么名做過什么事也告訴它(就是通常看到的幾個打勾選項:允許訪問我的昵稱/允許訪問我的頭像等等),淘寶說這樣就可以為我提供更多的服務,什么服務呢?模凌兩可,我呢看到有更多服務也沒多想就打勾了,不要白不要是吧。
這里就用到了OAuth,就是前面說的可不可以,這個要是真發現我在微博家干過的事,會不會把我加入重點監控對象,那就要看淘寶有多少節操了
其實現在很多的第三方登錄都是這樣,驗證身份的同時順便把你在其他地方的資料拿到手,名曰資料共享,其實共享一些非敏感信息倒也無妨,還可以免去了每去一個新網站都要填寫一大堆重復資料的問題。但是我要吐槽的是,很多網站明明讓我用第三方賬號登錄,你都OAuth了為毛登錄后還要再填一遍郵箱昵稱之類的東西?早知道這樣我還不如直接在你這邊注冊就好了,在我看來這是用戶體驗的問題了。
基於Spring的Github第三方登錄--通用化的第三方登陸實現
首先登陸Github賬號,進入【Settings】->選擇【Developer settings】->選擇【Register a new application】,這里我們可以看到當前賬戶所擁有的第三方應用。
注意右上角的Client Id和Client Secret,這兩個信息是用來標識第三方應用身份的相關信息,特別注意Client Secret,Client Secret是用來和授權服務器交換驗證憑證(Access Token)的,千萬不能暴露出去。
這樣,我們就擁有了第三方應用的身份,可以喝Github交互進行OAuth2的授權了。