从壹开始 [ Id4 ] 之一║ 授权服务器 IdentityServer4 开篇讲计划书
哈嘍大家周四好!時間過的很快,現(xiàn)在已經(jīng)是三月份了,我的?IdentityServer4?教程也拖了一定的時間了,正好最近有精力學(xué)新東西了,主要中間被小伙伴要求寫一個管理后臺,目前1.0已經(jīng)上線(《權(quán)限后臺系統(tǒng)?1.0?正式上線》),平時也一直開發(fā)維護(hù)中,希望能達(dá)到更優(yōu)吧。
開發(fā)之余,晚上的時候,一直慢慢的學(xué)習(xí)?Id4,經(jīng)過了大概半個月的簡單資料尋找和學(xué)習(xí),對?Id4?有了初步的認(rèn)識,發(fā)現(xiàn)隨著不斷地學(xué)習(xí),其實(shí)也沒有剛開始學(xué)的時候的那種莫名的恐懼感了(有些小伙伴應(yīng)該會有和我一樣的心情,就是初學(xué)一門技術(shù)的時候,內(nèi)心總是很恐慌的,比如我當(dāng)時學(xué)DDD(地址:《D3模式設(shè)計初探?與?我的計劃書》),其實(shí)我認(rèn)為我們恐慌的不是學(xué)不會,而是對學(xué)習(xí)動力的不自信,大膽的學(xué)就對了,哪怕最后只知道OAuth是啥,哪怕最后只會照著套模板,也是一種成功!)。
從今天起,我將慢慢的更新?IdentityServer4?系列,因為我還沒有學(xué)習(xí)完,所以會一邊學(xué)習(xí)一邊開發(fā),最后形成一個統(tǒng)一的服務(wù)項目,初步打算把所有開源的這些項目(Blog.Vue、Blog.tBug、Blog.Admin、DDD等,相關(guān)項目參看開源地址?https://github.com/anjoy8)都集中到這一個授權(quán)服務(wù)器上,我暫時取名為?Blog.IdentityServer?,正好有 vue/js 項目,也有 MVC 項目,{把這個系列寫完,前后端分離就差不多了,我也不打算再寫了},至于如何搭建倉庫,如何多項目調(diào)用,這我先斟酌下,會在以后的文章中,一一說到,因為要用到?EFCore?來處理用戶數(shù)據(jù),我個人感覺這還是一個很實(shí)用的項目,畢竟這幾個都是實(shí)實(shí)在在的有血有肉的工程,不只是一個簡單的Demo,自己都可以拿來改改優(yōu)化優(yōu)化,直接用了(我這王婆賣瓜也是沒誰了?)。
本文只是一個開篇講,不會涉及到內(nèi)容知識點(diǎn),有很多小伙伴都是一直看我的文章的,特別是看過我寫的JWT?微軟官方自帶授權(quán)認(rèn)證的《JWT授權(quán)》,如果之前的你能看懂,或者八成懂,那么這個系列肯定也能,如果以前的都看不懂,(⊙﹏⊙),只能說咱們緣分太淺?。
廢話不多說,先把我這兩周的小成果展示下,當(dāng)然,現(xiàn)在很low,以后會各種優(yōu)化和改進(jìn),預(yù)計會有十篇文章,
故事背景
這個是我的第一個 Vue.js 項目?Blog.Vue,(長的很丑,我決定趁著這個機(jī)會,把這個美化一下,畢竟我也是看臉的,先用這個練練手,其他的再慢慢更新授權(quán)),這個項目首頁不需要登錄,但是詳情頁需要用戶登錄,之前我是走的?Blog.Core?很普通的登錄,那以后全部會走?Blog.IdentityServer?統(tǒng)一授權(quán)服務(wù)器了,請注意是兩個端口/域名(Vue是6688端口,Id4是5002端口):
可能你會感覺很簡單,不就是一個客戶端跳轉(zhuǎn)到授權(quán)服務(wù)器嘛,然后登錄了再跳轉(zhuǎn)過來,增加了個用戶角色授權(quán),額,我也感覺挺簡單的,可是我一個月前真不是這么認(rèn)為的,當(dāng)時我感覺還是有點(diǎn)兒難度,現(xiàn)在看起來還可以,所以說,Id4想入門還是可以的,至于后期匹配的微服務(wù)了,API網(wǎng)關(guān)了,負(fù)載均衡了,嗯,來日方長。
1、源代碼Github
授權(quán)服務(wù):https://github.com/anjoy8/Blog.IdentityServer
資源服務(wù):https://github.com/anjoy8/Blog.Core
客戶端一:https://github.com/anjoy8/Blog.Admin
以后每一個項目修改完登錄授權(quán),這里就列舉一個,爭取把所有項目的授權(quán)都遷到?Id4?服務(wù)器上。
2、本系列文章一覽
01 ║ 授權(quán)服務(wù)器 IdentityServer4 開篇講&計劃書
02 ║ 基礎(chǔ)知識集合 & 項目搭建一
1、先看看概念
我們通過查看官網(wǎng),就看到官方很明顯的定義(下文的必看文檔中有官網(wǎng)地址):
IdentityServer4 is an OpenID Connect and OAuth 2.0 framework for ASP.NET Core 2.IdentityServer是基于OpenID?Connect協(xié)議標(biāo)準(zhǔn)的身份認(rèn)證和授權(quán)程序,它實(shí)現(xiàn)了OpenID?Connect?和?OAuth?2.0?協(xié)議。
同一種概念,不同的文獻(xiàn)使用不同的術(shù)語,比如你看到有些文獻(xiàn)把他叫做安全令牌服務(wù)(Security Token Service),
身份提供(Identity?Provider),授權(quán)服務(wù)器(Authorization?Server),IP-STS?等等。其實(shí)他們都是一個意思,目的都是在軟件應(yīng)用中為客戶端頒發(fā)令牌并用于安全訪問的。
IdentityServer有許多功能:
保護(hù)你的資源
使用本地帳戶或通過外部身份提供程序?qū)τ脩暨M(jìn)行身份驗證
提供會話管理和單點(diǎn)登錄
管理和驗證客戶機(jī)
向客戶發(fā)出標(biāo)識和訪問令牌
驗證令牌
2、它有什么優(yōu)點(diǎn)?
?
現(xiàn)在的應(yīng)用開發(fā)層出不窮,基于瀏覽器的網(wǎng)頁應(yīng)用,基于微信的公眾號、小程序,基于IOS、Android的App,基于Windows系統(tǒng)的桌面應(yīng)用和UWP應(yīng)用等等,這么多種類的應(yīng)用,就給應(yīng)用的開發(fā)帶來的挑戰(zhàn),我們除了分別實(shí)現(xiàn)各個應(yīng)用外,我們還要考慮各個應(yīng)用之間的交互,通用模塊的提煉,其中身份的認(rèn)證和授權(quán)就是每個應(yīng)用必不可少的的一部分。而現(xiàn)在的互聯(lián)網(wǎng),對于信息安全要求又十分苛刻,所以一套統(tǒng)一的身份認(rèn)證和授權(quán)就至關(guān)重要。
優(yōu)點(diǎn):簡單
因此,從實(shí)現(xiàn)者的角度來看,我在OAuth?2中看到的主要優(yōu)點(diǎn)是復(fù)雜性降低。它不需要請求簽名過程,這是不是很難,但肯定是fiddly。它大大減少了作為服務(wù)的客戶端所需的工作,這是(在現(xiàn)代的,移動世界)你最想要最小化疼痛的地方。在服務(wù)器?–?>內(nèi)容提供者端的降低的復(fù)雜性使其在數(shù)據(jù)中心中更具可擴(kuò)展性。
它將標(biāo)準(zhǔn)的一些擴(kuò)展編碼為OAuth?1.0a(如xAuth),現(xiàn)在廣泛使用。
大多數(shù)的應(yīng)用都如上所示,基本上都是通過客戶端對API進(jìn)行請求(瀏覽器、Web程序、本機(jī)應(yīng)用程序)等。當(dāng)你的項目到了一定得范圍和大小之后,就有可能去使用Nginx,這個時候,也必須考慮站點(diǎn)的安全性,因為不能讓你的核心業(yè)務(wù)信任外界任何的調(diào)用.當(dāng)然還有的時候,我們的擁有自己的一套API,為自己服務(wù)進(jìn)行使用,我們不想讓別人來調(diào)用我們的,這個時候也可以進(jìn)行使用。
這里引用下圣杰的圖,圣杰是我知道為數(shù)不多的,知識和Code都很強(qiáng)的大佬,曾經(jīng)有緣聊過兩句。
1、用到了哪些知識點(diǎn)
正如上邊的結(jié)構(gòu)腦圖中顯示的,大概就是這么多,可能你會感覺很多,開始你簡單看一下,有些概念咱們在講?JWT?授權(quán)的時候,都說過見過,甚至親身用過,比如:JWT(以及其中的iss、sub、expires等等),Claim,?Authentication,access_token,還有所謂的API?Resource資源。
OAuth 2.0 簡介???
OpenID 和 OAuth 的區(qū)別???
客戶端授權(quán)模式(Client Credentials)??
密碼授權(quán)模式(Resource Owner Password Credentials)?
授權(quán)碼授權(quán)模式(Authorization Code Flow,MVC調(diào)用)?
簡化授權(quán)模式-OpenID(Implicit Flow,JS/Vue 客戶端調(diào)用)?
混合模式-OpenID & OAuth(Hybrid Flow,角色+策略授權(quán))?
集成 ASP.NET Core Identity and EntityFramework Core? ?
單點(diǎn)登錄? ?
刷新登錄 RefreshToken? ?
外部登錄(比如QQ、Google、Github等)?
2、部分結(jié)構(gòu)/流程圖
?
(Authorization Code)
?
(使用 OpenID Connect 的身份驗證流)
3、必看文檔
我一直堅信,只要把官方文檔啃透了,肯定能學(xué)會,至少會七成,好多人都沒有養(yǎng)成這個習(xí)慣,就直接看Demo了,希望大家還是先看看文檔。
IdentityServer4:https://identityserver4.readthedocs.io/en/latest/
OAuth2.0:https://oauth.net/2/
OpenID?Connect:https://openid.net/connect/
1、https://docs.azure.cn/zh-cn/active-directory/develop/authentication-scenarios
2、https://github.com/IdentityServer/IdentityServer4.Samples
3、IdentityServer4 for OpenID Connect 和 OAuth 2.0
4、identity server 4
?以后會上傳本系列 Id4 倉庫...
原文地址:https://www.cnblogs.com/laozhang-is-phi/p/10483922.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的从壹开始 [ Id4 ] 之一║ 授权服务器 IdentityServer4 开篇讲计划书的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#并行编程(5):需要知道的异步
- 下一篇: 程序员修神之路--问世间异步为何物?