AspNetCore中使用Ocelot之 IdentityServer4
前言:
Ocelot網(wǎng)關(guān)是基于AspNetCore開(kāi)發(fā)的可擴(kuò)展的高性能的企業(yè)級(jí)Api網(wǎng)關(guān),目前已經(jīng)基于2.0?升級(jí)版本升級(jí),在使用AspNetCore?開(kāi)發(fā)的時(shí)候可以使用2.0版本了,
開(kāi)源項(xiàng)目Ocelot?張大隊(duì)長(zhǎng)是主力的參與人員,以前提起張大隊(duì)前面都會(huì)加個(gè)騰訊,張大隊(duì)于2018年8月8日?正式離開(kāi)了騰訊,回歸了真我,這里祝張大隊(duì):事事順心。
Ocelot是開(kāi)源的,開(kāi)源協(xié)議是MIT,所以我們可以大膽放心的使用。?
Ocelot的GitHub地址:https://github.com/ThreeMammals/Ocelot
Ocelot的中文文檔:https://blog.csdn.net/sD7O95O/article/details/79623654
?
目前OceLot ?已經(jīng)成為了一個(gè)使用AspNetCore 幾乎?必會(huì)的一項(xiàng)技術(shù)了,所以關(guān)注,并且要學(xué)習(xí),或者已經(jīng)在使用的.net?開(kāi)發(fā)人員可以關(guān)注并學(xué)習(xí)了解一下Ocelot,
Ocelot的功能:
1、基于IdentityServer4的認(rèn)證
2、Consul的注冊(cè)發(fā)現(xiàn)
3、單機(jī)的限流控制
4、基于Polly的使用
5、支持Http以及其他的rpc通訊
6、網(wǎng)關(guān)集群
?? ?? 等功能,
可以看出非常的強(qiáng)大。接下來(lái)我們將Ocelot的功能基于AspNetCore?進(jìn)行實(shí)現(xiàn)。首先學(xué)習(xí)一下IdentityServer4
1、基于IdentityServer4的認(rèn)證
在使用之前我們先明白IdentityServer4?是什么以及使用原理。
文檔地址:http://docs.identityserver.io/en/release/
中文文檔:網(wǎng)上也有 推薦 :https://www.cnblogs.com/ideck/
IdentityServer 認(rèn)證的作用是,不是誰(shuí)想登錄我的Web就能登錄的,也不是誰(shuí)想使用我的接口就能使用的,不經(jīng)過(guò)我的同意就想使用我的服務(wù)那是不存在的,除非你是故意的。
我們說(shuō)一個(gè)故事。
怎么說(shuō)呢,認(rèn)證其實(shí)就是一把鑰匙,打開(kāi)一扇門的鑰匙,就好比幾個(gè)人一起租房子一樣,該房門的鑰匙是指紋的,房東只給四個(gè)人授權(quán)了指紋開(kāi)門的權(quán)限,現(xiàn)在有四個(gè)人可以進(jìn)屋了,但是我們有五個(gè)人要進(jìn)屋,但是房東只授權(quán)我們其中四個(gè)人了,還有一人沒(méi)有鑰匙,但是每多配一把鑰匙,需要向房東申請(qǐng)授權(quán),申請(qǐng)通過(guò)后才能指紋開(kāi)鎖,這個(gè)人才能進(jìn)屋,我們變要求房東在授權(quán)一個(gè)人,但是這時(shí)候房東說(shuō)了那位哥們看起來(lái)不像是好人不給授權(quán),如果以后回來(lái)了敲門,確定是你后我來(lái)給開(kāi)門,后來(lái)這哥們氣不過(guò)通過(guò)私下操作也能開(kāi)門了,有一天被發(fā)現(xiàn)了,該哥們便失去了租住的權(quán)利了。?
這里的鑰匙就是秘鑰,有秘鑰了才能有進(jìn)行訪問(wèn)程序的權(quán)限,但是秘鑰只有授權(quán)后才能使用,事實(shí)上沒(méi)有經(jīng)過(guò)授權(quán)的秘鑰是不能進(jìn)行程序訪問(wèn)的,但是萬(wàn)事都不是絕對(duì)的,安全一直是我們所關(guān)注的問(wèn)題,就好比一把簡(jiǎn)單的鑰匙,經(jīng)過(guò)違規(guī)操作,就能打開(kāi)一扇門,危害我們的安危,這把違規(guī)的鑰匙告訴我們的是,秘鑰要嚴(yán)加看管,輕易不要暴露給別人,安全也要加強(qiáng)不要輕易放松。
IdentityServer4?的規(guī)則:
1、我們常見(jiàn)的程序之間的交互方式有:
2、瀏覽器和web 之間的通信:
3、Web 于Api之間的通信:
4、用戶于Api 之間的通信:
5、瀏覽器程序 于Api 之間的通信:
6、服務(wù)器程序 于Api 通訊:
7、Api 之間的相互通訊:
為了保證安全我們創(chuàng)建一個(gè)安全令牌的服務(wù),用來(lái)管理通信之間的基礎(chǔ)安全,并不是說(shuō)有了安全令牌服務(wù)就絕對(duì)安全了,為了安全我們還需要做到更多,沒(méi)有絕對(duì)的安全存在。
IdentityServer4?具體能用在什么地方:
因?yàn)?/span>IdentityServer4是一款包含了,授權(quán)(OAuth2)與認(rèn)證(OpendID)協(xié)議的框架。
具體什么是OAuth2和OpendID?我們以上文的故事來(lái)分析一下,授權(quán)(OAuth2)就是房東給租戶授權(quán)的鑰匙一樣,我們拿到授權(quán)的鑰匙后,可以隨意的進(jìn)出房子,但是那個(gè)倒霉的哥們沒(méi)有沒(méi)有授權(quán),每次回家都需要先讓房東證明他是他(認(rèn)證(OpendID?代表著是本人)后才能進(jìn)出房子,每次進(jìn)屋都需要證明自己,這樣進(jìn)出屋就不是很方便了,權(quán)限明顯沒(méi)有被授權(quán)(OAuth2)的人高。
如果通過(guò)我的描述還不是很清楚的,可以搜索一下具體的區(qū)別,我想收獲會(huì)更大。
推薦一個(gè)地址:https://www.jianshu.com/p/5d535eee0a9
有了這兩樣?xùn)|西后我們可以做以下事情(不包括所有):
1、可以做單點(diǎn)登錄的功能
2、可以做身份驗(yàn)證
3、可以做Api訪問(wèn)權(quán)限的控制
4、也可以做第三方登錄
IdentityServer4是靈活的,我們可以根據(jù)我們的需求去使用他,IdentityServer?有效的保護(hù)資源不受破壞。
大致使用流程如下圖所示:官方的圖:
搭建第一個(gè)IdentityServer?入門程序
1、創(chuàng)建AspNetCore空白Web?程序
2、在程序控制臺(tái)中添加IdentityServer4?的包 安裝命令獲取地址 :https://www.nuget.org/packages/IdentityServer4
安裝如圖所示:
使用命令?Install-Package IdentityServer4 -Version 2.2.0
3、在StartUP中這樣使用:下面就不過(guò)多的描述了,大多數(shù)都寫在代碼中:
在ConfigureServices?中寫入如下:
在?Configure?注入:
新建配置類Config:
4、運(yùn)行項(xiàng)目后根據(jù)啟動(dòng)的端口后面加上:.well-known/openid-configuration?可以得到配置信息的內(nèi)容:
我的是默認(rèn)的5000端口 如訪問(wèn):http://localhost:5000/.well-known/openid-configuration
這樣身份認(rèn)證服務(wù)就Ok了。
?
下一篇:我們創(chuàng)建一個(gè)受保護(hù)的Api,以及客戶端如何使用。
?
本來(lái)最近?想寫一系列?基于Ocelot+ InentityServer4?功能文章,以及后續(xù)使用的功能文章, 今天才接到通知 我們馬上要上線服務(wù),以及新的項(xiàng)目的所有AspNetCore的微服務(wù)接口 都要使用?Apollo?配置中心,最近要轉(zhuǎn)移一下學(xué)習(xí)重心了,先把項(xiàng)目搞定了在 繼續(xù)下一篇了。
原文地址:?https://www.cnblogs.com/szlblog/p/9452045.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的AspNetCore中使用Ocelot之 IdentityServer4的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 记一次.net core 集成vue 实
- 下一篇: 微服务介绍及Asp.net Core实战