本篇文章為大家展示了如何進(jìn)行IdentityServer的安全模型分析,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)公司成立于2013年,先為棗陽(yáng)等服務(wù)建站,棗陽(yáng)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為棗陽(yáng)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
典型的交互操作包括:
瀏覽器與 web 應(yīng)用程序進(jìn)行通信
Web 應(yīng)用程序與 web Api (有時(shí)是在他們自己的有時(shí)代表用戶) 通信
基于瀏覽器的應(yīng)用程序與 web Api 通信
本機(jī)應(yīng)用程序與 web Api 通信
基于服務(wù)器的應(yīng)用程序與 web Api 通信
Web Api 和 web Api 交互(有時(shí)是在他們自己有時(shí)也代表用戶)
通常(前端,中間層和后端)的每一層有保護(hù)資源和執(zhí)行身份驗(yàn)證和授權(quán)的需求 —— 典型的情況是針對(duì)同一用戶存儲(chǔ)。這就是為什么業(yè)務(wù)應(yīng)用程序/端點(diǎn)本身不實(shí)現(xiàn)這些基本的安全功能的,寧愿外包給安全令牌服務(wù)。
身份驗(yàn)證
當(dāng)應(yīng)用程序需要知道有關(guān)當(dāng)前用戶的身份時(shí),則需身份驗(yàn)證。通常這些應(yīng)用程序管理代表該用戶的數(shù)據(jù),并且需要確保該用戶僅可以訪問(wèn)他允許的數(shù)據(jù)。最常見的例子是 (經(jīng)典) 的 web 應(yīng)用程序 —— 但本機(jī)和基于 JS 的應(yīng)用程序,亦有需要進(jìn)行身份驗(yàn)證。
最常見的身份驗(yàn)證協(xié)議是 SAML2p, WS-Federation 和 OpenID Connect —- SAML2p 是最受歡迎并被廣泛部署的身份驗(yàn)證協(xié)議。
OpenID Connect是三個(gè)中最新的一個(gè),但是通常被認(rèn)為是未來(lái)的方向,因?yàn)樗诂F(xiàn)代應(yīng)用程序中最具有潛力。它從一開始就是為移動(dòng)應(yīng)用程序考慮的,被設(shè)計(jì)為友好的 API。
API 訪問(wèn)
應(yīng)用程序有兩種基本方式 —— 使用應(yīng)用程序的標(biāo)識(shí),或委派用戶的身份與API進(jìn)行溝通。有時(shí)這兩種方法必須相結(jié)合。
OAuth3 是允許應(yīng)用程序從安全令牌服務(wù)請(qǐng)求訪問(wèn)令牌并使用它們與Api通信的一個(gè)協(xié)議。它減少了客戶端應(yīng)用程序,以及 Api 的復(fù)雜性,因?yàn)榭梢赃M(jìn)行集中身份驗(yàn)證和授權(quán)。OpenID解決跨站點(diǎn)的認(rèn)證問(wèn)題,OAuth解決跨站點(diǎn)的授權(quán)問(wèn)題。認(rèn)證和授權(quán)是密不可分的。而OpenID和OAuth這兩套協(xié)議出自兩個(gè)不同的組織,協(xié)議上有相似和重合的之處,所以想將二者整合有些難度。好在OpenID Connect作為OpenID的下一版本,在OAuth 2.0的協(xié)議基礎(chǔ)上進(jìn)行擴(kuò)展,很好的解決了認(rèn)證和授權(quán)的統(tǒng)一,給開發(fā)者帶來(lái)的便利。Thinktecture IdentityServer v3 是一個(gè).NET 平臺(tái)上開源的OpenID Connect 提供者 和 OAuth3 驗(yàn)證服務(wù)器。
IdentityServer 的安全模型基于兩個(gè)基本原語(yǔ): 客戶端和作用域
客戶端
客戶端是請(qǐng)求訪問(wèn)IdentityServer或身份令牌的軟件。客戶可以是不同類型的應(yīng)用:桌面或移動(dòng)的,基于瀏覽器的或基于服務(wù)器的應(yīng)用。OpenID 連接和 OAuth3 描述 (也稱為流程)不同客戶端如何請(qǐng)求令牌模式。檢查的規(guī)格為有關(guān)流程的詳細(xì)信息。
默認(rèn)情況下,客戶端可以請(qǐng)求在 IdentityServer-中定義的任何作用域,但您可以限制每個(gè)客戶端可以請(qǐng)求的作用域。
作用域
作用域是一個(gè)資源 (通常也稱為 Web API) 的標(biāo)識(shí)符。你可以如范圍被稱為"日歷"為您創(chuàng)建日歷 API — — 或"calendar.readonly"如果你想要將您的日歷的 API 分割成子"地區(qū)"-在這種情況下只讀訪問(wèn)權(quán)限。
如果允許,此作用域?qū)?huì)包括作為訪問(wèn)令牌中的索賠與客戶端然后可以請(qǐng)求如"日歷"范圍-的標(biāo)記。然后可以確定范圍是目前驗(yàn)證的訪問(wèn)令牌時(shí)日歷 API (或資源)。
根據(jù)流程和配置,請(qǐng)求作用域?qū)@示給用戶之前頒發(fā)的令牌。這使用戶有機(jī)會(huì)來(lái)允許或拒絕訪問(wèn)該服務(wù)。這就被所謂的同意。
OpenID 連接的作用域有點(diǎn)特殊。它們定義一個(gè)可以要求用戶的身份信息和用戶信息終結(jié)點(diǎn)。每一個(gè) OpenID 連接作用域有關(guān)聯(lián)的聲明,如"Profile" 作用域映射到的名字、 姓氏、 性別、 個(gè)人資料圖片和更多。
IdentityServer 既支持"資源"的作用域,也支持 OpenID 連接作用域。
上述內(nèi)容就是如何進(jìn)行IdentityServer的安全模型分析,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。