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)]](https://i-blog.csdnimg.cn/blog_migrate/e119fbdbdf07ef2412159eb80c6ffd19.png)
callback?code码可以换一次只能换一次令牌,这样解决了授权的问题,jd可以获得qq的用户数据
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xHpVkp0n-1637032829264)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116090939066.png)]](https://i-blog.csdnimg.cn/blog_migrate/9a8df2496657add7fdf2bafd8c924d77.png)
Oauth1不安全
Oauth2角色
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gz6faUqq-1637032829273)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116091035952.png)]](https://i-blog.csdnimg.cn/blog_migrate/6b753cdf11fd56e9f1d080d2486f364e.png)
Resource Owner 资源持有者是用户 “我” 我来授权认证
Client 京东
模式

授权码模式:最严谨最安全,一个码只能换一次令牌,拿着码也无用了,京东拿到码去换令牌,浏览器看不到码
简化模式:直接申请令牌 直接返回令牌(token),没有吧令牌存到服务器,不安全,浏览器的能看到,原因是静态的页面可能没有服务器保存
密码模式:客户端和服务器高度信任,一个公司,甚至一个项目,T31这种前后端高度的信任,可以用密码
客户端模式:都是自己的报名字直接要
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLiSvCtQ-1637032829279)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116092641882.png)]](https://i-blog.csdnimg.cn/blog_migrate/6aced9c7d41b263c1361a95e392b434a.png)
前后端是跨域的,前端访问后端,就要拿到用户名和密码,
为什么用Oauth2


淘宝使用的 jwt
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cf8ZCgMP-1637032829293)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116093324292.png)]](https://i-blog.csdnimg.cn/blog_migrate/4d3ad8bcee1d6bdfcd658380d1ffedf8.png)
授权码拿令牌,根据令牌访问不同的服务
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cVcybBGC-1637032829297)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116093410545.png)]](https://i-blog.csdnimg.cn/blog_migrate/a97faae3687d24c76e9c43aa6b4a013a.png)
前后端分离,分体项目自然是跨域的,后段的微服务没有跨域但是也有可能需要令牌携带权限
跨域:域名 端口 协议
移动端没有cookie
token大于session
Oauth2怎么用

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iy19rbgE-1637032829310)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116095707651.png)]](https://i-blog.csdnimg.cn/blog_migrate/beedbb9623e02ee08b19de8dd5432350.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)]](https://i-blog.csdnimg.cn/blog_migrate/3e12ec49ef21af7569b10d1168c53fac.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)]](https://i-blog.csdnimg.cn/blog_migrate/4ccbb88797b2c1cf5413cc4a18c6f232.png)
授权码模式
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YUP13l3y-1637032829320)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116111909108.png)]](https://i-blog.csdnimg.cn/blog_migrate/e5491a14a60f1ddf6cb174f01c6d3e20.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1gRRLtaJ-1637032829324)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116103404099.png)]](https://i-blog.csdnimg.cn/blog_migrate/c3315a95f2ea6eda97bda78628dc6964.png)

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


“1799” 是过了1s 加上正好 30分钟
重新申请 已经失效了码

目前通过地址栏传令牌是不安全的,还可以通过bearer传令牌
简化模式
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Hdd0dGf-1637032829372)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116110921201.png)]](https://i-blog.csdnimg.cn/blog_migrate/cec7d2216a20ceffc3094f916983b9fb.png)
简化了授权模式 直接访问就返回了令牌和code
此时关闭服务器 就失效了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NNwewGW3-1637032829378)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116111142668.png)]](https://i-blog.csdnimg.cn/blog_migrate/cbed8ed3fecd5aba249eb25c3847ec76.png)
密码模式
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xhtgpBiv-1637032829390)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116111307231.png)]](https://i-blog.csdnimg.cn/blog_migrate/b73f6ac7de63bb7df51528b6437748f3.png)
没有浏览器了 直接发送密码
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HTh1se0Q-1637032829398)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116111441427.png)]](https://i-blog.csdnimg.cn/blog_migrate/7beed23311ff65018fbb279071d79092.png)
浏览器不能访问
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-52xcmNDL-1637032829402)(/Users/zhaokaijie/Library/Application Support/typora-user-images/image-20211116111500553.png)]](https://i-blog.csdnimg.cn/blog_migrate/adbc6d920860ac9e75d9299531b69827.png)
客户端模式


651

被折叠的 条评论
为什么被折叠?



