Oauth2权限管理

T31权限管理

实现的工具 Oauth2

基于前后端的令牌的实现

Oauth2是什么

eg:小区让快递员进入小区的方法

1.远程开门 2.告诉密码 3.使用令牌

在这里插入图片描述
在这里插入图片描述

生活中的Oauth2的运用

eg:京东使用qq wx 的扫码授权登录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FM0rXWek-1637032829258)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116090428934.png)]

callback?code码可以换一次只能换一次令牌,这样解决了授权的问题,jd可以获得qq的用户数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xHpVkp0n-1637032829264)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116090939066.png)]

Oauth1不安全

Oauth2角色

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gz6faUqq-1637032829273)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116091035952.png)]

Resource Owner 资源持有者是用户 “我” 我来授权认证

Client 京东

模式
在这里插入图片描述

授权码模式:最严谨最安全,一个码只能换一次令牌,拿着码也无用了,京东拿到码去换令牌,浏览器看不到码

简化模式:直接申请令牌 直接返回令牌(token),没有吧令牌存到服务器,不安全,浏览器的能看到,原因是静态的页面可能没有服务器保存

密码模式:客户端和服务器高度信任,一个公司,甚至一个项目,T31这种前后端高度的信任,可以用密码

客户端模式:都是自己的报名字直接要

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLiSvCtQ-1637032829279)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116092641882.png)]

前后端是跨域的,前端访问后端,就要拿到用户名和密码,

为什么用Oauth2

在这里插入图片描述

在这里插入图片描述

淘宝使用的 jwt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cf8ZCgMP-1637032829293)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116093324292.png)]

授权码拿令牌,根据令牌访问不同的服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cVcybBGC-1637032829297)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116093410545.png)]

前后端分离,分体项目自然是跨域的,后段的微服务没有跨域但是也有可能需要令牌携带权限

跨域:域名 端口 协议

移动端没有cookie

token大于session

Oauth2怎么用

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iy19rbgE-1637032829310)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116095707651.png)]

资源服务器拿到浏览器传来的令牌,要和授权服务器颁发的令牌做比较

要使用Oauth进行权限认证,需要配合Security放行相关资源

@Configuration
@EnableWebSecurity
@Order(1)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    //数据库
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {    //auth.inMemoryAuthentication()
        auth.inMemoryAuthentication()
                .withUser("lxs")
                .password("{noop}123") //使用springsecurity5,需要加上{noop}指定使用NoOpPasswordEncoder给DelegatingPasswordEncoder去校验密码
                .roles("admin");
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        //放行静态资源
        //解决静态资源被拦截的问题
//        web.ignoring().antMatchers("/asserts/**");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //默认放行的地址,由这些节点发起认证
        http
                .formLogin().permitAll()
                .and().logout().logoutUrl("/logout").logoutSuccessUrl("/")
                .and().authorizeRequests().antMatchers("/oauth/**", "/login/**", "/logout/**", "/api/**").permitAll()
                .anyRequest().authenticated()
                // 关闭跨域保护;
                .and().csrf().disable();
    }

    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }

}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jyrKwXKS-1637032829314)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116102151850.png)]

Oauth2配置继承ResourceServerConfigurerAdapter

在这里插入图片描述

@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

  @Override
  protected void configure(HttpSecurity http) throws Exception {
    //没有令牌都不能访问
    http.authorizeRequests().antMatchers("/**").authenticated();
    // 禁用CSRF
    http.csrf().disable();
  }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SNDCLLbS-1637032829319)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116103356227.png)]

授权码模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YUP13l3y-1637032829320)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116111909108.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1gRRLtaJ-1637032829324)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116103404099.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

得到了code 现在需要的是拿码换令牌 是post请求

在这里插入图片描述
在这里插入图片描述

“1799” 是过了1s 加上正好 30分钟

重新申请 已经失效了码

在这里插入图片描述

目前通过地址栏传令牌是不安全的,还可以通过bearer传令牌

简化模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Hdd0dGf-1637032829372)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116110921201.png)]

简化了授权模式 直接访问就返回了令牌和code

此时关闭服务器 就失效了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NNwewGW3-1637032829378)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116111142668.png)]

密码模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xhtgpBiv-1637032829390)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116111307231.png)]

没有浏览器了 直接发送密码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HTh1se0Q-1637032829398)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116111441427.png)]

浏览器不能访问

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-52xcmNDL-1637032829402)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116111500553.png)]

客户端模式

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值