springsecurity+oauth 分布式认证授权笔记总结12

一 springsecurity实现权限认证的笔记

1.1  springsecurity的作用

springsecurity两大核心功能是认证和授权,通过usernamepasswordAuthenticationFilter进行认证;通过filtersecurityintercepter进行授权springsecurity其实多个filter过滤链进行过滤。

用户认证指的是:验证某个用户是否为系统合法主题,也就是说用户能否访问系统,用户认证一般要求用提供用户名和密码,系统通过校验用户名和密码来验证认证过程。

用户授权指的是某个用户具有权限执行某个操作,在一个系统中,不同的用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而用的用户可以进行修改。一般来说系统会为不同的用户分配不同的角色,而每个角色对应一系列的权限。

1.2 token模式与session模式

1.如果基于session模式,那么spring-security会对cookie里的sessionid进行解析,找到服务器存储session信息,然后判断当前用户是否符合请求的要求。

2.如果是基于token,则需要解析token,然后对当前请求加入到spring-security管理的权限信息中去。

1.3 案例授权流程

如果系统的模块比较多,每个模块都需要进行认证和授权,所以我们选择基于token的形式进行认证与授权。

1.用户根据用户名和密码认证成功,然后获取用户角色的一系列信息,并以用户名为key,权限为列表的value的形式存储到redis缓存中。

2.根据用户名和相关信息生成token,返回给前端。

3.浏览器将token记录到cookie中,每次调用api接口都默认将token携带到header请求头中。

4.spring-security解析header头,获取token信息,解析token获取用户名,根据用户名从redis中获取权限信息列表。这样spring-security就能够判断当前请求是否有权限访问。

1.4 整合springsecurity的结构

二  疑问记录

2.1 springsecurity怎么取消默认的登录页面以及修改页面自定义样式

2.2 分布式认证授权问题

分布式认证授权:
1.没有登录情况下,访问资源 ,api网关能够进行权限拦截
2.登录情况下,怎么对token的解析验证
3.登录情况下,权限内容怎么获取

4.分布式认证授权怎么做sso?

2.3 权限系统中,用户A对用户B修改权限后

1)超级用户修改正在登录中的用户密码之后当前强制退出?

实现逻辑:
1.假设用户认证成功后,用户信息存储到redis中,且形式为:<userid,权限>
2.管理员修改用户密码后,通过userid将redis中的用户信息清空。
3.用户再操作功能时,相应请求走filter进行判断,用户的权限为空,则让其重新登录。

2) 超级用户修改正在登录中的用户的角色,权限之后强制退出?

实现逻辑:
1.假设用户认证成功后,用户信息存储到redis中,且形式为:<userid,权限>
2.管理员修改用户角色后,通过查询redis,把redis中包含修改角色的用户信息都清空
3.用户操作功能时,相应请求走filter进行判断,用户的权限为空,则让其重新登录

2.4 指定登录接口

1.前端

2.后端

具体登录接口

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你想了解如何在Spring Boot中整合Spring SecurityOAuth 2.0来实现token认证。下面是一个基本的步骤: 1. 添加依赖:在你的`pom.xml`文件中添加Spring SecurityOAuth 2.0的依赖。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-client</artifactId> </dependency> ``` 2. 配置Spring Security:创建一个继承自`WebSecurityConfigurerAdapter`的配置类,并覆盖`configure`方法,配置Spring Security。 ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/oauth2/**", "/login/**", "/logout/**") .permitAll() .anyRequest() .authenticated() .and() .oauth2Login() .loginPage("/login") .and() .logout() .logoutUrl("/logout") .logoutSuccessUrl("/") .deleteCookies("JSESSIONID"); } } ``` 这个配置类指定了哪些URL需要进行认证,`antMatchers`方法指定了不需要认证的URL。 3. 配置OAuth 2.0客户端:创建一个继承自`WebSecurityConfigurerAdapter`的配置类,并使用`@EnableOAuth2Client`注解开启OAuth 2.0客户端。 ```java @Configuration @EnableOAuth2Client public class OAuth2ClientConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { // 配置HTTP Security } @Bean public OAuth2AuthorizedClientService authorizedClientService( OAuth2ClientRegistrationRepository clientRegistrationRepository) { return new InMemoryOAuth2AuthorizedClientService(clientRegistrationRepository); } } ``` 这个配置类可以用来配置OAuth 2.0的客户端,你可以在`configure`方法中添加一些额外的配置。 4. 配置OAuth 2.0客户端注册:在`application.properties`文件中配置OAuth 2.0的客户端注册信息。 ```properties spring.security.oauth2.client.registration.my-client-id.client-id=your-client-id spring.security.oauth2.client.registration.my-client-id.client-secret=your-client-secret spring.security.oauth2.client.registration.my-client-id.scope=your-scopes spring.security.oauth2.client.registration.my-client-id.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.my-client-id.redirect-uri=your-redirect-uri ``` 这个配置文件中的`my-client-id`是你自己指定的客户端ID,你需要将其替换为你自己的信息。 这些步骤是实现Spring Boot中整合Spring SecurityOAuth 2.0实现token认证的基本步骤。你可以根据自己的需求进行进一步的配置和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值