asp.net core系列 53 IdentityServer4 (IS4)介紹

一.概述

在物理層之間相互通信必須保護(hù)資源,需要實(shí)現(xiàn)身份驗(yàn)證和授權(quán)厂镇,通常針對(duì)同一個(gè)用戶存儲(chǔ)纤壁。對(duì)于資源安全設(shè)計(jì)包括二個(gè)部分,一個(gè)是認(rèn)證捺信,一個(gè)是API訪問酌媒。

1 認(rèn)證

認(rèn)證是指:應(yīng)用程序需要知道當(dāng)前用戶的身份時(shí)欠痴,需要進(jìn)行身份驗(yàn)證,確定用戶是否有效秒咨。最常見的身份驗(yàn)證協(xié)議是SAML2p喇辽,WS-Federation、OpenID Connect雨席。SAML2p是最受歡迎和最廣泛部署的菩咨。OpenID Connect是三者中的最新產(chǎn)品,被認(rèn)為有最大潛力。

2 API訪問

對(duì)API訪問是:用戶對(duì)資源的訪問陡厘,以api的形式來訪問資源抽米,涉及到資源授權(quán)。

3 OAuth2 介紹

OAuth2是一種協(xié)議糙置,全稱(Open Authorization)云茸,是為用戶資源的授權(quán)提供了一個(gè)安全的、開放而又簡(jiǎn)易的標(biāo)準(zhǔn)谤饭”贽啵互聯(lián)網(wǎng)很多服務(wù)如Open API都提供了OAUTH認(rèn)證服務(wù)。為桌面程序网持、手機(jī)端或web應(yīng)用提供了一種簡(jiǎn)單的宜岛,標(biāo)準(zhǔn)的方式去訪問需要用戶授權(quán)的API服務(wù)。OAuth2協(xié)議特定:
(1)簡(jiǎn)單:不管是OAUTH服務(wù)提供者還是應(yīng)用開發(fā)者功舀,都很易于理解與使用萍倡。
(2)安全:沒有涉及到用戶密鑰等信息,更安全更靈活辟汰。
(3)開放:任何服務(wù)提供商都可以實(shí)現(xiàn)OAUTH列敲,任何軟件開發(fā)商都可以使用OAUTH。

4 OIDC介紹

OIDC是指OpenID Connect帖汞,是基于OAuth 2.0規(guī)范的可互操作的身份驗(yàn)證協(xié)議戴而。是用 API 進(jìn)行身份交互的框架。它使用簡(jiǎn)單的REST / JSON消息流來實(shí)現(xiàn)翩蘸。OIDC實(shí)現(xiàn)了用戶驗(yàn)證跨越物理層所意,無需管理密碼文件(密鑰)。
OpenID是Authentication催首,即認(rèn)證扶踊。對(duì)用戶的身份進(jìn)行認(rèn)證,判斷其身份是否有效郎任。
OAuth是Authorization秧耗,即授權(quán)。 對(duì)用戶允許訪問哪些資源的授權(quán)舶治。 授權(quán)要在認(rèn)證之后進(jìn)行分井,只有確定用戶身份才能授權(quán)车猬。
OpenID Connect是“認(rèn)證”和“授權(quán)”的結(jié)合。是對(duì)OAuth 2.0之上的擴(kuò)展尺锚。這樣對(duì)于兩個(gè)基本的安全問題珠闰,即身份驗(yàn)證和API訪問,被合并為一個(gè)協(xié)議缩麸,通常只需一次往返安全令牌服務(wù)苍日。

5 IdentityServer4 介紹

IdentityServer4 是適用于ASP.NET Core缚够,集成了OpenID Connect和OAuth 2.0的框架肋演。在現(xiàn)實(shí)開發(fā)中域醇,項(xiàng)目涉及到多種物理層架構(gòu),它們是多進(jìn)程的方式部署到不同的服務(wù)器上弧械。比如Web八酒、移動(dòng)、桌面刃唐、服務(wù)等物理層架構(gòu)羞迷。也有可能是第三方的程序。 這些物理層之間的通信需要涉及到授權(quán)和身份認(rèn)證画饥。最常見的互動(dòng)包括:
 (1) 瀏覽器與Web應(yīng)用程序通信衔瓮。
(2) Web應(yīng)用程序與Web API進(jìn)行通信(可能都是自己的,也有可能是第三方提供)抖甘。
(3) 服務(wù)器的應(yīng)用程序與Web API通信(比如windows服務(wù)與Web API)热鞍。
(4) Web API與Web API進(jìn)行通信(可能都是自己的,也有可能是第三方提供)衔彻。
在沒有使用安全令牌服務(wù)時(shí)薇宠,多物理層之間通信,看起來像下面這樣:



 加了IdentityServer4重構(gòu)應(yīng)用程序后艰额,使用了安全令牌服務(wù)澄港,產(chǎn)生的體系結(jié)構(gòu)和協(xié)議如下所示:


6 IdentityServer功能包括:

(1)保護(hù)你的資源(資源可以理解包括權(quán)限,比如是否有增柄沮、刪回梧、改、查的權(quán)限)

(2)使用本地帳戶存儲(chǔ)或外部身份提供程序?qū)τ脩暨M(jìn)行身份驗(yàn)證

(3)提供會(huì)話管理和單點(diǎn)登錄

(4)管理和驗(yàn)證客戶端

(5)向客戶發(fā)放身份和訪問令牌

(5)驗(yàn)證令牌

7 名詞術(shù)語

- 用戶是指:通過注冊(cè)成功后祖搓, 登錄來訪問資源的人狱意。比如:會(huì)員,系統(tǒng)管理員等棕硫。

  • 客戶端是指:向IdentityServer請(qǐng)求令牌的程序髓涯,用于驗(yàn)證用戶(請(qǐng)求身份令牌)或訪問資源(請(qǐng)求訪問令牌)袒啼。如Web應(yīng)用程序哈扮,本機(jī)移動(dòng)或桌面應(yīng)用程序纬纪,SPA,服務(wù)器進(jìn)程等滑肉。
  • 資源:使用IdentityServer保護(hù)資源包各,比如用戶的身份數(shù)據(jù)或API。身份數(shù)據(jù)是關(guān)于用戶的信息也稱Claim聲明, 例如姓名或電子郵件地址靶庙。API表示客戶端要調(diào)用的功能如Web API问畅。
  • 身份令牌:是指身份驗(yàn)證過程,確實(shí)用戶是否有效六荒。即Authentication認(rèn)證护姆。
  • 訪問令牌:是指允許訪問API資源。即Authorization授權(quán)掏击。
8 nuget包安裝

安裝版本網(wǎng)址:https://www.nuget.org/packages/IdentityServer4/3.0.0-preview3.4
安裝:Install-Package IdentityServer4

9 關(guān)于IdentityServer4的一些開源示例

https://identityserver4.readthedocs.io/en/latest/intro/packaging.html

下面是關(guān)于IdentityServer的源碼和示例卵皂,其中IdentityServer4.Samples中有大量示例,學(xué)習(xí)從這里開始砚亭。

https://github.com/IdentityServer/

10 學(xué)習(xí)IdentityServer步驟

(1) 將IdentityServer添加到ASP.NET Core應(yīng)用程序

(2) 配置IdentityServer

(3) 為各種客戶發(fā)放令牌

(4) 保護(hù)Web應(yīng)用程序和API

(5) 添加對(duì)基于EntityFramework的配置的支持

(6) 添加對(duì)ASP.NET身份的支持

(7) 添加AdminUI社區(qū)版以管理用戶和配置

參考文獻(xiàn)

IdentityServer4官方文檔介紹

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末灯变,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捅膘,更是在濱河造成了極大的恐慌添祸,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寻仗,死亡現(xiàn)場(chǎng)離奇詭異刃泌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)愧沟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門蔬咬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沐寺,你說我怎么就攤上這事林艘。” “怎么了混坞?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵狐援,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我究孕,道長(zhǎng)啥酱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任厨诸,我火速辦了婚禮镶殷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘微酬。我一直安慰自己绘趋,他們只是感情好颤陶,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著陷遮,像睡著了一般滓走。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上帽馋,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天搅方,我揣著相機(jī)與錄音,去河邊找鬼绽族。 笑死姨涡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吧慢。 我是一名探鬼主播绣溜,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼娄蔼!你這毒婦竟也來了怖喻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤岁诉,失蹤者是張志新(化名)和其女友劉穎锚沸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涕癣,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哗蜈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坠韩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片距潘。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖只搁,靈堂內(nèi)的尸體忽然破棺而出音比,到底是詐尸還是另有隱情,我是刑警寧澤氢惋,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布洞翩,位于F島的核電站,受9級(jí)特大地震影響焰望,放射性物質(zhì)發(fā)生泄漏骚亿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一熊赖、第九天 我趴在偏房一處隱蔽的房頂上張望来屠。 院中可真熱鬧,春花似錦、人聲如沸俱笛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嫂粟。三九已至,卻和暖如春墨缘,著一層夾襖步出監(jiān)牢的瞬間星虹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工镊讼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宽涌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓蝶棋,卻偏偏與公主長(zhǎng)得像卸亮,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子玩裙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 以下是官網(wǎng)直譯:https://oauth.net/ 1. 首頁 OAuth是一種開放協(xié)議(注:協(xié)議是公開的兼贸,任何...
    KennethChen93閱讀 11,206評(píng)論 0 20
  • 1. 引言 現(xiàn)在的應(yīng)用開發(fā)層出不窮,基于瀏覽器的網(wǎng)頁應(yīng)用吃溅,基于微信的公眾號(hào)溶诞、小程序,基于IOS决侈、Android的A...
    圣杰閱讀 36,287評(píng)論 7 48
  • 原文鏈接:https://www.cnblogs.com/neutra/archive/2012/07/26/26...
    苦苦修行閱讀 1,299評(píng)論 0 6
  • 今年年初螺垢,第一份實(shí)習(xí),接觸了如何使用Facebook API, Twitter API...去獲取數(shù)據(jù)赖歌,自動(dòng)發(fā)個(gè)F...
    Jason_Yuan閱讀 16,082評(píng)論 3 51
  • 畢業(yè)感言 我是2015年6月畢業(yè)的枉圃,在校時(shí)自認(rèn)為比...
    三吉_002c閱讀 594評(píng)論 1 0