spring-security认证授权
授權(quán)是在認證后對資源的權(quán)限控制,權(quán)限控制很多系統(tǒng)中都需要,但是不同的系統(tǒng)對于權(quán)限的敏感程度不同,因而權(quán)限的設(shè)計實現(xiàn)方式不同。
rbac權(quán)限模型可以分為基于角色的權(quán)限控制和基于資源的權(quán)限控制
-
基于角色的權(quán)限訪問控制(Role-Based Access Control)
權(quán)限與角色相關(guān)聯(lián),用戶通過成為適當角色的成員而得到這些角色的權(quán)限。這就極大地簡化了權(quán)限的管理。在一個組織中,角色是為了完成各種工作而創(chuàng)造,用戶則依據(jù)它的責(zé)任和資格來被指派相應(yīng)的角色,用戶可以很容易地從一個角色被指派到另一個角色。角色可依新的需求和系統(tǒng)的合并而賦予新的權(quán)限,而權(quán)限也可根據(jù)需要而從某角色中回收。
授權(quán)
OAuth是一個關(guān)于授權(quán)(authorization)的開放網(wǎng)絡(luò)標準,在全世界得到廣泛應(yīng)用,目前的版本是2.0版。
客戶端必須得到用戶的授權(quán)(authorization grant),才能獲得令牌(access token)。OAuth 2.0定義了四種授權(quán)方式。
授權(quán)碼模式(authorization code)
簡化模式(implicit)
密碼模式(resource owner password credentials)
客戶端模式(client credentials)
阮一峰講OAuth 2.0
個人oauth2demo
spring-security
spring-security-oauth2實現(xiàn)了oauth的框架,后來遷移到了spring-security5.X,但是去掉了server端.
spring-security利用了filter chain里的 各個filter來攔截請求,但最后會委托給AuthenticationManager認證器和AccessDecisionManager授權(quán)器。
認證流程
DaoAuthenticationProvider類里的UserDetails loadedUser = this.getUserDetailsService().loadUserByUsername(username);調(diào)用自定義的UserDetailsService去加載用戶信息,然后if (!passwordEncoder.matches(presentedPassword, userDetails.getPassword())){throw new BadCredentialsException}調(diào)用密碼加密器去判斷驗證密碼是否正確,否則拋出異常
授權(quán)流程
總結(jié)
以上是生活随笔為你收集整理的spring-security认证授权的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工作中必须要知道的git高级用法
- 下一篇: JWT-基于token的认证方式