欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

sureness認(rèn)證鑒權(quán)框架 v1.0.8

認(rèn)證鑒權(quán)框架

  • 源碼大?。?span>3.4MB
  • 源碼語(yǔ)言:簡(jiǎn)體中文
  • 源碼類型:國(guó)產(chǎn)軟件
  • 源碼授權(quán):免費(fèi)軟件
  • 源碼類別:java源碼
  • 應(yīng)用平臺(tái):Java
  • 更新時(shí)間:2023-01-15
  • 網(wǎng)友評(píng)分:
360通過(guò) 騰訊通過(guò) 金山通過(guò)

情介紹

sureness是一個(gè)簡(jiǎn)單高效的面向restful api的認(rèn)證鑒權(quán)框架。

背景
現(xiàn)在很多網(wǎng)站都進(jìn)行了前后端分離,后端提供rest api,前端調(diào)用接口獲取數(shù)據(jù)渲染。這種架構(gòu)下如何保護(hù)好后端所提供的rest api使得更加重視。

api的保護(hù)可以認(rèn)為:認(rèn)證-請(qǐng)求攜帶的認(rèn)證信息是否校驗(yàn)通過(guò),鑒權(quán)-認(rèn)證通過(guò)的用戶擁有指定api的權(quán)限才能訪問(wèn)此api。然而不僅于此,什么樣的認(rèn)證策略, jwt, basic,digest,oauth還是多支持, 權(quán)限配置是寫(xiě)死代碼還是動(dòng)態(tài)配置,我想動(dòng)態(tài)賦權(quán)怎么辦,云原生越來(lái)越火用的框架是quarkus等新秀不是spring生態(tài)咋弄,http實(shí)現(xiàn)不是servlet而是jax-rs規(guī)范咋整, to be or not to be, this is a question

目前java主流的權(quán)限框架有shiro,spring security, 下面對(duì)于它們的探討都是個(gè)人之見(jiàn),接受糾正

shiro對(duì)于restful api原生支持不太友好,需要改寫(xiě)一些代碼,2年前一個(gè)項(xiàng)目 booshiro 就是改造shiro,使其在過(guò)濾鏈就能匹配不同的rest請(qǐng)求進(jìn)行權(quán)限校驗(yàn),之后給shiro commit幾次pr,fix其在過(guò)濾鏈匹配時(shí)的危險(xiǎn)漏洞,總的來(lái)說(shuō)shiro很強(qiáng)大但其起源并非面向web,對(duì)restful不是很友好

spring security很強(qiáng)大,與spring深度集成,離開(kāi)spring,比如javalin和之前用過(guò)的osgi框架karaf就用不了了

如果不用注解配置,它們都會(huì)在鏈?zhǔn)狡ヅ溥@塊,用請(qǐng)求的url和配置的鏈一個(gè)一個(gè)ant匹配(匹配過(guò)程中會(huì)有緩存等提高性能),但匹配的鏈過(guò)多時(shí)還是比較耗性能(根據(jù)算法時(shí)間復(fù)雜度判斷,暫未測(cè)試驗(yàn)證)

我們希望能解決這些,提供一個(gè)針對(duì)restful api,無(wú)框架依賴,可以動(dòng)態(tài)修改權(quán)限,多認(rèn)證策略,更快速度,易用的認(rèn)證鑒權(quán)框架。

介紹
sureness 是我們?cè)谑褂?java 權(quán)限框架 shiro 之后,吸取其良好設(shè)計(jì)加上一些想法實(shí)現(xiàn)的全新認(rèn)證鑒權(quán)項(xiàng)目

面對(duì) restful api 的認(rèn)證鑒權(quán),基于 rbac (用戶-角色-資源)主要關(guān)注于對(duì) restful api 的安全保護(hù)

無(wú)特定框架依賴(本質(zhì)就是過(guò)濾器處攔截判斷,已有springboot,quarkus,javalin,ktor等demo)

支持動(dòng)態(tài)修改權(quán)限配置(動(dòng)態(tài)修改哪些api需要被認(rèn)證,可以被誰(shuí)訪問(wèn))

支持主流http容器 servlet 和 jax-rs

支持多種認(rèn)證策略, jwt, basic auth, digest auth ... 可擴(kuò)展自定義支持的認(rèn)證方式

基于改進(jìn)的字典匹配樹(shù)擁有的高性能

良好的擴(kuò)展接口, demo和文檔

sureness的低配置,易擴(kuò)展,不耦合其他框架,能使開(kāi)發(fā)者對(duì)自己的項(xiàng)目多場(chǎng)景快速安全的進(jìn)行保護(hù)

框架示例支持
spring sample-bootstrap

springboot sample-tom

quarkus sample-quarkus

javalin sample-javalin

ktor sample-ktor

spring webflux sample-spring-webflux

more samples todo

快速開(kāi)始

使用前一些約定

sureness盡量簡(jiǎn)潔,基于rbac,只有(角色-資源)的映射,沒(méi)有(權(quán)限)動(dòng)作映射,即 用戶-角色-資源

我們將restful api請(qǐng)求視作一個(gè)資源,資源格式為: requestUri===httpMethod

即請(qǐng)求的路徑加上其請(qǐng)求方式(post,get,put,delete...)作為一個(gè)整體被視作一個(gè)資源

eg: /api/v2/book===get get方式請(qǐng)求/api/v2/book接口數(shù)據(jù)

角色資源映射: 用戶所屬角色--角色擁有資源--用戶擁有資源(用戶就能訪問(wèn)此api)

資源路徑匹配詳見(jiàn) url路徑匹配

項(xiàng)目中加入sureness

項(xiàng)目使用maven或gradle構(gòu)建,加入坐標(biāo)

 <dependency>
<groupId>com.usthe.sureness</groupId>
<artifactId>sureness-core</artifactId>
<version>0.4</version>
</dependency>
compile group: 'com.usthe.sureness', name: 'sureness-core', version: '0.4'

使用默認(rèn)配置來(lái)配置sureness
默認(rèn)配置使用了文件數(shù)據(jù)源sureness.yml作為賬戶權(quán)限數(shù)據(jù)源

默認(rèn)配置支持了jwt, basic auth, digest auth認(rèn)證

@Bean
public DefaultSurenessConfig surenessConfig() {
return new DefaultSurenessConfig();
}

配置權(quán)限賬戶數(shù)據(jù)源

sureness認(rèn)證鑒權(quán),當(dāng)然也需要我們提供自己的賬戶數(shù)據(jù),角色權(quán)限數(shù)據(jù)等,這些數(shù)據(jù)可能來(lái)自文本,關(guān)系數(shù)據(jù)庫(kù),非關(guān)系數(shù)據(jù)庫(kù),注解等。

我們提供了數(shù)據(jù)源接口:SurenessAccountProvider - 賬戶數(shù)據(jù)接口, PathTreeProvider - 資源權(quán)限數(shù)據(jù)接口,用戶可以實(shí)現(xiàn)此接口實(shí)現(xiàn)自定義數(shù)據(jù)源。

當(dāng)前我們也提供文本形式的數(shù)據(jù)源實(shí)現(xiàn) DocumentResourceDefaultProvider 和 注解形式的資源權(quán)限數(shù)據(jù)源實(shí)現(xiàn) AnnotationLoader。

如果是使用了默認(rèn)sureness配置-DefaultSurenessConfig,其配置的是文本數(shù)據(jù)源,用戶可以直接通過(guò)修改sureness.yml文件來(lái)配置數(shù)據(jù)。

文本數(shù)據(jù)源sureness.yml配置使用方式詳見(jiàn)文檔 默認(rèn)文本數(shù)據(jù)源

注解形式的資源權(quán)限數(shù)據(jù)源配置使用方式詳見(jiàn)文檔 注解資源權(quán)限數(shù)據(jù)源

我們提供了使用代碼DEMO:

默認(rèn)文本數(shù)據(jù)源具體實(shí)現(xiàn),請(qǐng)參考使用sureness10分鐘搭建權(quán)限項(xiàng)目--sample-bootstrap

若權(quán)限配置數(shù)據(jù)來(lái)自數(shù)據(jù)庫(kù),請(qǐng)參考使用sureness30分鐘搭建權(quán)限項(xiàng)目--sample-tom

添加過(guò)濾器攔截所有請(qǐng)求
sureness的本質(zhì)就攔截所有rest請(qǐng)求對(duì)其認(rèn)證鑒權(quán)判斷。

入口攔截器器實(shí)現(xiàn)一般可以是 filter or spring interceptor

在攔截器中加入sureness的安全過(guò)濾器,如下:

SubjectSum subject = SurenessSecurityManager.getInstance().checkIn(servletRequest)

實(shí)現(xiàn)認(rèn)證鑒權(quán)相關(guān)異常處理流程
sureness使用異常處理流程:

若認(rèn)證鑒權(quán)成功,checkIn會(huì)返回包含用戶信息的SubjectSum對(duì)象

若中間認(rèn)證鑒權(quán)失敗,checkIn會(huì)拋出不同類型的認(rèn)證鑒權(quán)異常,用戶需根據(jù)這些異常來(lái)繼續(xù)后面的流程(返回相應(yīng)的請(qǐng)求響應(yīng))

這里我們就需要對(duì)checkIn拋出的異常做自定義處理,認(rèn)證鑒權(quán)成功直接通過(guò),失敗拋出特定異常進(jìn)行處理,如下:

try {
SubjectSum subject = SurenessSecurityManager.getInstance().checkIn(servletRequest);
} catch (ProcessorNotFoundException | UnknownAccountException | UnsupportedSubjectException e4) {
// 賬戶創(chuàng)建相關(guān)異常
} catch (DisabledAccountException | ExcessiveAttemptsException e2 ) {
// 賬戶禁用相關(guān)異常
} catch (IncorrectCredentialsException | ExpiredCredentialsException e3) {
// 認(rèn)證失敗相關(guān)異常
} catch (UnauthorizedException e5) {
// 鑒權(quán)失敗相關(guān)異常
} catch (SurenessAuthenticationException | SurenessAuthorizationException e) {
// 其他自定義異常
}

異常詳見(jiàn) 默認(rèn)異常類型

HAVE FUN

進(jìn)階擴(kuò)展

如果了解 處理流程,就大概知道sureness提供的擴(kuò)展點(diǎn)

sureness支持自定義subject,自定義subjectCreator注冊(cè),自定義processor處理器等

擴(kuò)展之前需要了解以下接口:

Subject: 認(rèn)證鑒權(quán)對(duì)象接口,提供訪問(wèn)對(duì)象的賬戶密鑰,請(qǐng)求資源,角色等信息

SubjectCreate: 創(chuàng)建Subject接口,根據(jù)請(qǐng)求內(nèi)容創(chuàng)建不同類型的Subject對(duì)象

Processor: Subject處理接口,根據(jù)Subject信息,進(jìn)行認(rèn)證鑒權(quán)

PathTreeProvider: 資源的數(shù)據(jù)源接口,實(shí)現(xiàn)從數(shù)據(jù)庫(kù),文本等加載數(shù)據(jù)

SurenessAccountProvider: 用戶的賬戶密鑰信息接口,實(shí)現(xiàn)從數(shù)據(jù)庫(kù),文本等加載數(shù)據(jù)

sureness大致流程:

1、自定義數(shù)據(jù)源

實(shí)現(xiàn) PathTreeProvider的接口, 加載到DefaultPathRoleMatcher中

實(shí)現(xiàn) SurenessAccountProvider的接口,加載到需要的processor中

2、自定義subject

實(shí)現(xiàn)Subject接口,添加自定義的subject內(nèi)容

實(shí)現(xiàn)SubjectCreate接口方法,創(chuàng)建出自定義的subject

實(shí)現(xiàn)Processor接口,支持處理自定義的subject

3、自定義processor

一個(gè)subject當(dāng)然也可以被不同的processor處理,所以可以單獨(dú)自定義processor

實(shí)現(xiàn)Processor接口,設(shè)置支持的subject,實(shí)現(xiàn)處理該subject的邏輯

具體擴(kuò)展實(shí)踐請(qǐng)參考 使用sureness30分鐘搭建權(quán)限項(xiàng)目--sample-tom

參與貢獻(xiàn)

非常歡迎參與項(xiàng)目貢獻(xiàn),跟sureness一起走得更遠(yuǎn)更好。對(duì)項(xiàng)目代碼有疑問(wèn)或者建議請(qǐng)直接聯(lián)系 @tomsun28

倉(cāng)庫(kù)的組成部分:

sureness的核心代碼--sureness-core

使用sureness10分鐘搭建權(quán)限項(xiàng)目--sample-bootstrap

使用sureness30分鐘搭建權(quán)限項(xiàng)目--sample-tom

各個(gè)框架使用sureness的樣例項(xiàng)目(javalin,ktor,quarkus)--samples

載地址

下載錯(cuò)誤?【投訴報(bào)錯(cuò)】

sureness認(rèn)證鑒權(quán)框架 v1.0.8

      氣源碼

      關(guān)文章

      • Java輕量級(jí)類隔離框架 SOFAArk Project v2.3.0

        SOFAArk 是一款基于 Java 實(shí)現(xiàn)的動(dòng)態(tài)熱部署和輕量級(jí)類隔離框架,由螞蟻集團(tuán)開(kāi)源貢獻(xiàn),主要提供應(yīng)用模塊的動(dòng)態(tài)熱部署和類隔離能力。歡迎需要的朋友下載使用...

      • SpringBlade微服務(wù)開(kāi)發(fā)平臺(tái) v4.4.0

        SpringBlade 是一個(gè)由商業(yè)級(jí)項(xiàng)目升級(jí)優(yōu)化而來(lái)的SpringCloud分布式微服務(wù)架構(gòu)、SpringBoot單體式微服務(wù)架構(gòu)并存的綜合型項(xiàng)目,采用Java8 API重構(gòu)了業(yè)務(wù)代碼,完全遵循阿里巴...

      • Diboot輕代碼開(kāi)發(fā)平臺(tái) v2.11.0

        Diboot輕代碼開(kāi)發(fā)平臺(tái)是一個(gè)面向開(kāi)發(fā)人員的低代碼開(kāi)發(fā)平臺(tái),將重復(fù)性的工作自動(dòng)化,提高質(zhì)量、效率、可維護(hù)性...

      • RuoYi-activiti工作流平臺(tái)源碼 v4.1

        RuoYi-activiti是一款以若依開(kāi)源權(quán)限管理系統(tǒng)為基礎(chǔ)開(kāi)發(fā)平臺(tái)并集成了activiti框架完成的工作流系統(tǒng),旨在打造集流程設(shè)計(jì)、流程部署、流程執(zhí)行、任務(wù)辦理、流程監(jiān)控于一體的...

      • RuoYi若依權(quán)限管理系統(tǒng) v4.7.9

        RuoYi若依權(quán)限管理系統(tǒng)是一個(gè)基于SpringBoot的權(quán)限管理系統(tǒng),代碼易讀易懂、界面簡(jiǎn)潔美觀, 核心技術(shù)采用Spring、MyBatis、Shiro沒(méi)有任何其它重度依賴,喜歡的朋友快來(lái)下載...

      • Java Struts2漏洞復(fù)現(xiàn)工具

        今天給大家分享Java Struts2漏洞復(fù)現(xiàn)工具,喜歡的朋友快來(lái)下載體驗(yàn)吧...

      • java操作excel的jar包(jxl.jar包 源碼)

        jxl.jar是通過(guò)java操作excel表格的工具類庫(kù),能夠修飾單元格屬性,是由java語(yǔ)言開(kāi)發(fā)而成的,接下來(lái)通過(guò)本文給大家介紹java操作excel的jar包(jxl.jar包 源碼),喜歡的朋友快...

      • springboot整合QuartJob實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理源代碼

        Quartz是一個(gè)完全由java編寫(xiě)的開(kāi)源作業(yè)調(diào)度框架,形式簡(jiǎn)易,功能強(qiáng)大,,下面給大家分享springboot整合QuartJob實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理源代碼,感興趣的朋友快來(lái)下載體驗(yàn)吧...

      • SOFABoot開(kāi)源框架 v3.24.0

        SOFABoot 是螞蟻集團(tuán)開(kāi)源的基于 Spring Boot 的研發(fā)框架,它在 Spring Boot 的基礎(chǔ)上,提供了諸如 Readiness Check,上下文隔離,類隔離,日志空間隔離等等能力...

      • 基于SSM的應(yīng)急資源管理系統(tǒng)源碼 v1.0

        應(yīng)急資源管理系統(tǒng)用的是是比較流行的SSM和前端JSP技術(shù),用它來(lái)創(chuàng)建使用腳本語(yǔ)言,結(jié)合HTML代碼來(lái)制作動(dòng)態(tài) 網(wǎng)頁(yè),歡迎需要的朋友下載使用...

      載聲明

      ☉ 解壓密碼:www.dbjr.com.cn 就是本站主域名,希望大家看清楚,[ 分享碼的獲取方法 ]可以參考這篇文章
      ☉ 推薦使用 [ 迅雷 ] 下載,使用 [ WinRAR v5 ] 以上版本解壓本站軟件。
      ☉ 如果這個(gè)軟件總是不能下載的請(qǐng)?jiān)谠u(píng)論中留言,我們會(huì)盡快修復(fù),謝謝!
      ☉ 下載本站資源,如果服務(wù)器暫不能下載請(qǐng)過(guò)一段時(shí)間重試!或者多試試幾個(gè)下載地址
      ☉ 如果遇到什么問(wèn)題,請(qǐng)?jiān)u論留言,我們定會(huì)解決問(wèn)題,謝謝大家支持!
      ☉ 本站提供的一些商業(yè)軟件是供學(xué)習(xí)研究之用,如用于商業(yè)用途,請(qǐng)購(gòu)買(mǎi)正版。
      ☉ 本站提供的sureness認(rèn)證鑒權(quán)框架 v1.0.8資源來(lái)源互聯(lián)網(wǎng),版權(quán)歸該下載資源的合法擁有者所有。