中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-12-30 10:59:53 來源:億速云 閱讀:165 作者:小新 欄目:大數據

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

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

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

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

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

比如BlogVue項目,訪問Blog相關的api;TibugNuxt項目,訪問Tibug相關的api。

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

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


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

     

首先我們需要定義一個單獨的資源服務器作用域,然后將這些作用域配置到資源上:

// 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())            },        }    };}
 


這些基礎代碼肯定都能看的懂吧,只要你學會Ids4,肯定都明白,那對應到數據庫里,就是這樣的:

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


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


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

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


對應的數據庫也是很簡單:

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


這里給大家再啰嗦一句,要學好Ids4,數據庫表結構一定要做到了然于胸,什么數據對應什么表,什么錯誤對應什么配置,要做到心中有數。

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



   
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。


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



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

     

這里先說下,為了達到封裝的效果呢,我把認證和授權分開寫了,結構是這樣的:

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



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

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


我們可以根據需要添加多個模塊,每個模塊會對應一個Scope,那每個Scope又對應一個客戶端Client,這樣就實現了項目基本的授權方案,認證相關的配置不用動。

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

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


到這里基本就搞定了,調試后,可以發現新生成的Token令牌也發生了變化:

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


可能你會說,那我已經使用了復雜的基于數據庫的策略授權,為啥還要搞這個呢?

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


以上是“Ids4中分模塊保護資源API怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

api
AI

山丹县| 调兵山市| 湘阴县| 诸暨市| 大田县| 合肥市| 左权县| 呼伦贝尔市| 大丰市| 玉环县| 股票| 思茅市| 武平县| 马公市| 阿拉善左旗| 新河县| 德州市| 赫章县| 西乌| 乌鲁木齐县| 泌阳县| 小金县| 灵丘县| 潜山县| 长兴县| 淳安县| 洪洞县| 龙井市| 崇明县| 宿迁市| 扶余县| 平遥县| 白朗县| 修武县| 吴江市| 安平县| 乐至县| 九江县| 民丰县| 赣州市| 尖扎县|