Ids4中分模塊保護資源API怎么用

小編給大家分享一下Ids4中分模塊保護資源API怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

公司主營業(yè)務(wù):成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出北屯免費做網(wǎng)站回饋大家。

書接上文,上回書咱們說到了IdentityServer4(下文統(tǒng)稱Ids4)官方已經(jīng)從v3更新升級到了v4版本,我的Blog.Idp項目也做了同步更新,主要是針對快速啟動UI做的對應(yīng)修改,畢竟Ids4類庫nuget包更新就是一鍵的事兒

更新的內(nèi)容涉及的比較多,主要是對一些屬性的優(yōu)化,亦或者是對ASP.NetCore更兼容等等,其中我個人認為最核心也最重要的一個更新,就是新增了ApiResourceScopes表,進一步細化了對資源服務(wù)器的限制顆粒度,總結(jié)來說:

之前我們是一個客戶端只能針對一個資源服務(wù)器來操作,那該資源服務(wù)器下的所有api都會被保護,當(dāng)然也都會被控制。所以是面向整個ApiResources的。

但是現(xiàn)在做了細化以后,一個資源服務(wù)器可以分隔出多個作用域Scope,那這樣的話,我們就可以定義多個客戶端,分模塊的去訪問同一個統(tǒng)一的資源服務(wù)器。

比如BlogVue項目,訪問Blog相關(guān)的api;TibugNuxt項目,訪問Tibug相關(guān)的api。

這里先不要著急的抬杠這么擴展的好處和優(yōu)劣點,等到自己有需要,或者自己有這樣的需求的時候就明白了,本文不做解釋,只是一把梭的講解如何配置三端,從而滿足分模塊保護資源API的目的。

本文我就用http://vueblog.neters.club項目舉例,將Blog.Core資源服務(wù)器中定義一個Blog模塊,來實現(xiàn)基于Scope的策略授權(quán)方案配置,主要是針對三端進行配置。


Ids4中分模塊保護資源API怎么用    
1、Blog.Idp認證中心配置

     

首先我們需要定義一個單獨的資源服務(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 項目    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é)會Ids4,肯定都明白,那對應(yīng)到數(shù)據(jù)庫里,就是這樣的:

Ids4中分模塊保護資源API怎么用

Ids4中分模塊保護資源API怎么用

然后需要配置客戶端Client,將我們需要的Scope賦給指定的客戶端:

Ids4中分模塊保護資源API怎么用

對應(yīng)的數(shù)據(jù)庫也是很簡單:

Ids4中分模塊保護資源API怎么用

這里給大家再啰嗦一句,要學(xué)好Ids4,數(shù)據(jù)庫表結(jié)構(gòu)一定要做到了然于胸,什么數(shù)據(jù)對應(yīng)什么表,什么錯誤對應(yīng)什么配置,要做到心中有數(shù)。

到這里認證中心就配置完了,接下來就是客戶端了。


   
Ids4中分模塊保護資源API怎么用      
2、Blog.Vue配置認證連接

     

這個地方很簡單,和之前幾乎一模一樣,只是在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 這個Scope。

那就剩下最后一步了,配置資源服務(wù)器,既然使用到了作用域Scope,那就需要針對具體的作用域,配置具體的策略方案。


   
Ids4中分模塊保護資源API怎么用      
3、Blog.Core增加Scope策略授權(quán)

     

這里先說下,為了達到封裝的效果呢,我把認證和授權(quán)分開寫了,結(jié)構(gòu)是這樣的:

Ids4中分模塊保護資源API怎么用

既然我們現(xiàn)在是增加了作用域Scope,那就是需要一個基于Scope的策略授權(quán)方案,在授權(quán)擴展類AuthorizationSetup.cs中,添加代碼:

 // 4、基于 Scope 策略授權(quán) services.AddAuthorization(options => {     // 博客模塊的策略     options.AddPolicy("Scope_BlogModule_Policy", builder =>     {         //客戶端Scope中包含blog.core.api.BlogModule才能訪問         builder.RequireScope("blog.core.api.BlogModule");     });
    // 其他模塊的策略     // ...
 });
 

我們可以根據(jù)需要添加多個模塊,每個模塊會對應(yīng)一個Scope,那每個Scope又對應(yīng)一個客戶端Client,這樣就實現(xiàn)了項目基本的授權(quán)方案,認證相關(guān)的配置不用動。

然后只需要在指定的控制器或者Action上配置權(quán)限特性就行:

Ids4中分模塊保護資源API怎么用

到這里基本就搞定了,調(diào)試后,可以發(fā)現(xiàn)新生成的Token令牌也發(fā)生了變化:

Ids4中分模塊保護資源API怎么用

可能你會說,那我已經(jīng)使用了復(fù)雜的基于數(shù)據(jù)庫的策略授權(quán),為啥還要搞這個呢?

我是這么想的,畢竟這個面向scope開發(fā)是可以在ids4可控的,細分到客戶端的,這么配置好后,就不用配置復(fù)雜的數(shù)據(jù)庫了,當(dāng)然這一般都是針對前臺的展示項目,后端Admin項目肯定需要很復(fù)雜的數(shù)據(jù)庫配置更好。

以上是“Ids4中分模塊保護資源API怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前題目:Ids4中分模塊保護資源API怎么用
路徑分享:http://bm7419.com/article38/ijhgsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站微信公眾號、網(wǎng)站改版、全網(wǎng)營銷推廣、企業(yè)建站、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營