首页 > 其他分享 >什么是SpringSecurity的认证与授权?

什么是SpringSecurity的认证与授权?

时间:2024-06-11 10:00:29浏览次数:11  
标签:Spring 用户 认证 Authentication 授权 Security SpringSecurity

在 Spring Security 框架中,认证(Authentication)和授权(Authorization)是两个核心概念,它们是实现应用安全的基石。虽然这两个术语通常一起使用,但它们描述的是两个不同的安全过程。

认证 (Authentication)

认证是确认某个用户的身份的过程。简而言之,认证过程是用来验证用户是否是他们声称的那个人。在 Web 应用中,认证通常是通过登录过程完成的,用户会提供用户名和密码。如果提供了有效的凭据,系统将会认可用户的身份。

Spring Security 中的认证过程是通过 AuthenticationManager 接口来管理的,该接口只有一个方法:

public interface AuthenticationManager {
    Authentication authenticate(Authentication authentication) throws AuthenticationException;
}

当一个 Authentication 请求被发送到 AuthenticationManager 时,它会使用配置好的 AuthenticationProvider(s) 来验证凭据。如果成功,它将返回一个已填充好的 Authentication 实例,这表示认证过程成功。这个过程可能涉及到与数据库、LDAP、Active Directory、一个 OAuth 提供者进行交互,或是其他自定义来源验证用户身份。

授权 (Authorization)

一旦认证过程成功,下一步是确定用户是否有执行特定操作的权限。授权是指决定一个已验证身份的用户能够访问的应用资源和执行的操作。通常,这些操作是基于用户角色和权限来控制的。

在 Spring Security 中,授权是通过 AccessDecisionManager 和一系列的 AccessDecisionVoter 对象来实现的。在进行授权决策时,会将用户的 Authentication、请求的 SecureObject(如 HTTP 请求)、以及相关 ConfigAttribute(s)(安全配置属性)传递给 AccessDecisionManager。它会询问各个 AccessDecisionVoter 对象,通过投票方式来决定是否允许访问请求资源。

结合使用

Spring Security 通过许多内建机制来支持认证和授权。这里是一个实现 Spring Security 认证和授权中典型流程的高级概述:

  1. 用户向应用程序提交带有凭据的登录请求(通常是用户名和密码)。
  2. Spring Security 的 AuthenticationFilter 捕获这个请求,并将凭据封装进 Authentication 对象中。
  3. Authentication 对象被传递给 AuthenticationManager 进行处理。
  4. AuthenticationManager 使用一个或多个 AuthenticationProvider 来验证凭据。
  5. 如果认证成功,用户的身份和相关权限被保存在安全上下文(SecurityContext)中。
  6. 在用户尝试访问保护的资源时,通过 AccessDecisionManager 来判断是否授权这个访问请求。

总的来说,在 Spring Security 中,认证负责确认用户是谁,而授权负责确定用户能做什么。这两个概念在实际应用中紧密相连,共同提供了一个全面的应用程序安全体系。

标签:Spring,用户,认证,Authentication,授权,Security,SpringSecurity
From: https://blog.csdn.net/m0_68948067/article/details/139322815

相关文章

  • SpringSecurity如何自定义用户认证逻辑?
    在SpringSecurity中自定义用户认证逻辑通常涉及到实现你自己的UserDetailsService或使用自定义的AuthenticationProvider。下面是通过这两种方式自定义用户认证逻辑的基本演示:使用UserDetailsService自定义UserDetailsService是SpringSecurity用于从数据库、L......
  • 基础概念-认证授权会话
    1.1.  什么是认证进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条等,下边拿微信来举例子说明认证相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信,输入账号和密码登录微信的过程就是认证。系统为什么要认证?......
  • 关于继承djangon内置模型AbstractUser用户认证authenticate一直返回None
    为了想要使用django内置的auth_user表字段,但是有些字段没有,想要定制于是我们可以:首先导入:fromdjango.contrib.auth.modelsimportUser,AbstractUserfromdjango.dbimportmodels然后这么写:classUserInfo(AbstractUser):"""用户信息"""nid=m......
  • CCF-GESP 等级考试 2023年9月认证C++四级真题解析
    一、单选题(每题2分,共30分)第1题⼈们所使⽤的⼿机上安装的App通常指的是()。A.⼀款操作系统B.⼀款应⽤软件C.⼀种通话设备D.以上都不对正确答案:B.⼀款应⽤软件解析:App是"Application"的缩写,中文意思是"应用",特指安装在智能手机上的第三方应用软件。这些软件通常......
  • Harmony0S应用开发者高级认证(最新超全!!!)
    收集整理不易请留个赞再走吧qwq祝大家一次考过!!!需要Word文档的朋友可以小窗发给你考证网址 华为开发者官方网站_创新从这里开始云函数打包完成后,需要到AppGalleryConnect创建对应函数的触发器才可以在端侧中调用(错误)每一个自定义组件都有自己的生命周期(正确)基于端......
  • 抖音小红书淘宝拼多多商家订单对接ERP|获取电商平台订单信息(商家授权)
     custom-自定义API操作 支持抖音拼多多淘宝小红书公共参数名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[yes,no]默认yes,将......
  • GitHub飙升!京东认证的“Python编程入门三剑客”究竟好在哪?
    Python凭借着简单易学、功能强大,已经跃居TIOB编程语言榜首,并且已经开始了它的霸榜之旅。如何选择一套适合自己的Python学习教程,是每个Python爱好者面临的首要问题。今天给小伙伴们带来的是图灵&京东认证的“Python编程入门三剑客”,先看《Python编程从入门到实践》,打好Python入......
  • 认证授权
    1. 授权认证目前主流使用的授权认证方案是用户-角色-权限的模式如下图所示:对于一个用户的账号,其可以满足多种角色,对于每一种角色其可以有多种权限,对于这种多对多对多的关系,我们可以建立相应的数据库进行维护如何存储用户的信息:Cookie-Session是一种存储用户信息的方法,可以......
  • webservice、WCF、webAPI、MVC权限认证
    webservice权限认证》》soapHeaderSOAPHeader案例服务引用下生成的服务方法参数中会自动加入一个soapHeader的参数,WEB服务引用则没有,我感觉采用WEB服务引用基于这种验证比较方便,因为只需将soapHeader实例赋值一次就可以多次调用不同的服务方法。Asp.NET认证在as......
  • PHP实名认证接口开发示例、银行卡实名认证API
    在互联网技术多元化、高速的发展下,催生出在挑战中不断奋勇前进的互联网企业。但不能忽视的是,互联网技术的快速迭代也会使部分企业在冲击中败下阵来,面临淘汰的危机。随着O2O、共享经济等新兴商业形式的兴起,企业对实名认证业务的数据形式和数据质量也有了更高的要求。这一现实警......