小編給大家分享一下Ids4中分模塊保護(hù)資源API怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
公司主營(yíng)業(yè)務(wù):成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出北屯免費(fèi)做網(wǎng)站回饋大家。
書(shū)接上文,上回書(shū)咱們說(shuō)到了IdentityServer4(下文統(tǒng)稱Ids4)官方已經(jīng)從v3更新升級(jí)到了v4版本,我的Blog.Idp項(xiàng)目也做了同步更新,主要是針對(duì)快速啟動(dòng)UI做的對(duì)應(yīng)修改,畢竟Ids4類庫(kù)nuget包更新就是一鍵的事兒
更新的內(nèi)容涉及的比較多,主要是對(duì)一些屬性的優(yōu)化,亦或者是對(duì)ASP.NetCore更兼容等等,其中我個(gè)人認(rèn)為最核心也最重要的一個(gè)更新,就是新增了ApiResourceScopes表,進(jìn)一步細(xì)化了對(duì)資源服務(wù)器的限制顆粒度,總結(jié)來(lái)說(shuō):
之前我們是一個(gè)客戶端只能針對(duì)一個(gè)資源服務(wù)器來(lái)操作,那該資源服務(wù)器下的所有api都會(huì)被保護(hù),當(dāng)然也都會(huì)被控制。所以是面向整個(gè)ApiResources的。
但是現(xiàn)在做了細(xì)化以后,一個(gè)資源服務(wù)器可以分隔出多個(gè)作用域Scope,那這樣的話,我們就可以定義多個(gè)客戶端,分模塊的去訪問(wèn)同一個(gè)統(tǒng)一的資源服務(wù)器。
比如BlogVue項(xiàng)目,訪問(wèn)Blog相關(guān)的api;TibugNuxt項(xiàng)目,訪問(wèn)Tibug相關(guān)的api。
這里先不要著急的抬杠這么擴(kuò)展的好處和優(yōu)劣點(diǎn),等到自己有需要,或者自己有這樣的需求的時(shí)候就明白了,本文不做解釋,只是一把梭的講解如何配置三端,從而滿足分模塊保護(hù)資源API的目的。
本文我就用http://vueblog.neters.club項(xiàng)目舉例,將Blog.Core資源服務(wù)器中定義一個(gè)Blog模塊,來(lái)實(shí)現(xiàn)基于Scope的策略授權(quán)方案配置,主要是針對(duì)三端進(jìn)行配置。
首先我們需要定義一個(gè)單獨(dú)的資源服務(wù)器作用域,然后將這些作用域配置到資源上:
// v4更新
public static IEnumerable<ApiScope> GetApiScopes()
{
return new ApiScope[] {
new ApiScope("blog.core.api"),
new ApiScope("blog.core.api.BlogModule"),
};
}
public static IEnumerable<ApiResource> GetApiResources()
{
// blog.core 項(xiàng)目
return new List<ApiResource> {
new ApiResource("blog.core.api", "Blog.Core API") {
// include the following using claims in access token (in addition to subject id)
//requires using using IdentityModel;
UserClaims = { JwtClaimTypes.Name, JwtClaimTypes.Role,"rolename" },
// v4更新
Scopes={ "blog.core.api","blog.core.api.BlogModule"},
ApiSecrets = new List<Secret>()
{
new Secret("api_secret".Sha256())
},
}
};
}
這些基礎(chǔ)代碼肯定都能看的懂吧,只要你學(xué)會(huì)Ids4,肯定都明白,那對(duì)應(yīng)到數(shù)據(jù)庫(kù)里,就是這樣的:
然后需要配置客戶端Client,將我們需要的Scope賦給指定的客戶端:
對(duì)應(yīng)的數(shù)據(jù)庫(kù)也是很簡(jiǎn)單:
這里給大家再啰嗦一句,要學(xué)好Ids4,數(shù)據(jù)庫(kù)表結(jié)構(gòu)一定要做到了然于胸,什么數(shù)據(jù)對(duì)應(yīng)什么表,什么錯(cuò)誤對(duì)應(yīng)什么配置,要做到心中有數(shù)。
到這里認(rèn)證中心就配置完了,接下來(lái)就是客戶端了。
這個(gè)地方很簡(jiǎn)單,和之前幾乎一模一樣,只是在scope作用域上,改一下資源的域就行:
constructor () { super({ authority: 'https://ids.neters.club', client_id: 'blogvuejs', redirect_uri: 'http://localhost:6688/callback', response_type: 'id_token token', scope: 'openid profile roles blog.core.api.BlogModule', post_logout_redirect_uri: 'http://localhost:6688' }) }
就是代碼中的 blog.core.api.BlogModule 這個(gè)Scope。
那就剩下最后一步了,配置資源服務(wù)器,既然使用到了作用域Scope,那就需要針對(duì)具體的作用域,配置具體的策略方案。
這里先說(shuō)下,為了達(dá)到封裝的效果呢,我把認(rèn)證和授權(quán)分開(kāi)寫(xiě)了,結(jié)構(gòu)是這樣的:
既然我們現(xiàn)在是增加了作用域Scope,那就是需要一個(gè)基于Scope的策略授權(quán)方案,在授權(quán)擴(kuò)展類AuthorizationSetup.cs中,添加代碼:
// 4、基于 Scope 策略授權(quán)
services.AddAuthorization(options =>
{
// 博客模塊的策略
options.AddPolicy("Scope_BlogModule_Policy", builder =>
{
//客戶端Scope中包含blog.core.api.BlogModule才能訪問(wèn)
builder.RequireScope("blog.core.api.BlogModule");
});
// 其他模塊的策略
// ...
});
我們可以根據(jù)需要添加多個(gè)模塊,每個(gè)模塊會(huì)對(duì)應(yīng)一個(gè)Scope,那每個(gè)Scope又對(duì)應(yīng)一個(gè)客戶端Client,這樣就實(shí)現(xiàn)了項(xiàng)目基本的授權(quán)方案,認(rèn)證相關(guān)的配置不用動(dòng)。
然后只需要在指定的控制器或者Action上配置權(quán)限特性就行:
到這里基本就搞定了,調(diào)試后,可以發(fā)現(xiàn)新生成的Token令牌也發(fā)生了變化:
可能你會(huì)說(shuō),那我已經(jīng)使用了復(fù)雜的基于數(shù)據(jù)庫(kù)的策略授權(quán),為啥還要搞這個(gè)呢?
我是這么想的,畢竟這個(gè)面向scope開(kāi)發(fā)是可以在ids4可控的,細(xì)分到客戶端的,這么配置好后,就不用配置復(fù)雜的數(shù)據(jù)庫(kù)了,當(dāng)然這一般都是針對(duì)前臺(tái)的展示項(xiàng)目,后端Admin項(xiàng)目肯定需要很復(fù)雜的數(shù)據(jù)庫(kù)配置更好。
以上是“Ids4中分模塊保護(hù)資源API怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前題目:Ids4中分模塊保護(hù)資源API怎么用
路徑分享:http://aaarwkj.com/article38/ijhgsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、微信公眾號(hào)、網(wǎng)站改版、全網(wǎng)營(yíng)銷推廣、企業(yè)建站、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)