寫(xiě)在前面
在研究IdentityServer4之前我們要知道OAuth的協(xié)議,OAuth是一個(gè)關(guān)于授權(quán)的框架,并不包括認(rèn)證,關(guān)于OAuth的東西 ,推薦看阮一峰的博客,這篇文章也是參考阮大大的文章穿插一些自己的理解。
OAuth目前的版本是2.0 所以下文中會(huì)稱為OAuth2.0
OAuth使用場(chǎng)景
舉個(gè)簡(jiǎn)單的例子。
當(dāng)我們想用微博賬號(hào)登錄簡(jiǎn)書(shū)的時(shí)候,但是必須要經(jīng)過(guò)用戶自己的授權(quán)才行,才能拿到微博的用戶信息登錄簡(jiǎn)書(shū),OAuth就是為了解決這些問(wèn)題而產(chǎn)生的,但是請(qǐng)注意,OAuth2.0解決的是授權(quán),它并不包含認(rèn)證
OAuth中的名詞
1.Client 客服端,上文中的簡(jiǎn)書(shū)
2.Http Server 服務(wù)提供商 上文中的微博
3.Resource Owner 資源持有者 這里指用戶
OAuth實(shí)現(xiàn)的方式(還是以微博登陸簡(jiǎn)書(shū)為例子)
- 用戶進(jìn)入簡(jiǎn)書(shū)登錄頁(yè)面,選擇第三方微博登陸,會(huì)跳轉(zhuǎn)到微博的登錄界面
- 用戶同意授權(quán)給簡(jiǎn)書(shū),通過(guò)redirect_uri跳轉(zhuǎn)回簡(jiǎn)書(shū),同時(shí)在地址上帶上code授權(quán)碼
- 我們通過(guò)code來(lái)請(qǐng)求微博的api接口,獲取到用access_token
- 最后通過(guò)access_token來(lái)獲取,這就是微博登錄簡(jiǎn)書(shū)的內(nèi)部全過(guò)程
從這個(gè)過(guò)程種可以看出,OAuth就是沒(méi)有包含認(rèn)證,只有授權(quán)
這種模式在oauth中稱為授權(quán)碼模式,通過(guò)code去換取令牌,做過(guò)微信開(kāi)發(fā)和第三方登陸的同學(xué)肯定對(duì)這個(gè)流程很了解
OAuth2.0四種流程
- 客戶端模式
- 密碼模式
- 簡(jiǎn)化模式
- 授權(quán)碼模式
那么下篇開(kāi)始結(jié)合我們代碼把四種模式實(shí)現(xiàn)一下