欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring-security 理解 笔记 介绍以及使用(持续更新)

程序员文章站 2022-08-07 17:11:20
本人经过2周的学习,成功搭建了认证服务器,资源服务器和客户端 。下面是本人对 oauth2的理解,以及spring-security的使用,如果理解错误的地方,还望指正。 现在代码有点凌乱,过段时间会放到github上面的,本人会在代码中添加详细注释,供学习交流使用 理解 1.认证服务器 如抖音可以 ......

本人经过2周的学习,成功搭建了认证服务器,资源服务器和客户端 。下面是本人对 oauth2的理解,以及spring-security的使用,如果理解错误的地方,还望指正。

现在代码有点凌乱,过段时间会放到github上面的,本人会在代码中添加详细注释,供学习交流使用

理解

1.认证服务器

  如抖音可以选择qq或者微信登录,此时qq或者微信就是认证服务器

  1.认证::用户认证和客户端认证,只要用户或者客户端在认证服务器中注册即可

  2.授权:通过认证之后赋予权限,

  服务器认证成功后,会返回token, token中携带用户信息,用户拥有的角色信息,客户端信息

   对于qq,微信登录会返回一个openid,这个暂时不讲, 自己搭建的认证服务器暂时没有openid,后期有时间再去研究

2.资源服务器

  提供服务的服务器,如获取用户信息,用户头像等,需要携带token请求获取想要的信息(资源服务器会解析token,判断是否有权限)

  

3.客户端

  如抖音,知否,需要通过认证服务器(qq,微信)认证的应用服务器。

  客户端通过认证拿到token,就可以访问资源服务器了

 

那么第三方客户端是如何完成授权的呢?

 解读4中授权模式 :

  1.授权码模式:推荐使用的授权模式,流程如下,下面给予解析

    spring-security 理解 笔记     介绍以及使用(持续更新)

    解析:

    *****  client_id为客户端id,必须注册到认证服务器, redirect_uri 这个地址后面获取到code要跳转的地方,也就是这个地址能拿到认证服务器返回的code  ****

 

    1.比如我现在要选择登陆csdn,打开登录页面,我们可以选择qq,微博,百度等 登录方式,

    2.我们选择第三方登陆,这时候浏览器会重定向http://localhost:8080/oauth/authorize?response_type=code&client_id=myclient_id&redirect_uri=http://baidu.com,不经过客户端;response_type=code为特定参数

    3.我们要携带这些参数response_type,client_id,redirect_uri 去认证,就会跳转到登录页面。client_id,redirect_uri  是你注册到认证服务器的信息

      4.我们填写登录信息并登录,然后跳转到让用户授权(授可以默认同意授权,也可以让用户自己在页面上确定)  

      5.认证并授权通过,重定向到redirect_uri 并带上code参数,如https://www.baidu.com/?code=o5nsth,有人会问为什么不直接返回token? 这重定向要经过浏览器的,直接返回token是不安全的

      6.redirect_uri 为客户端中的一个rest接口,这样客户端就拿到token,并使用token和client_id,client_secret等换取token,grant_type=authorization为特定参数

    http://localhost:8080/oauth/token? grant_type=authorization_code &code=o4yrcs&client_id=pair &client_secret=secret&redirect_uri=http://baidu.com

    这个请求是在客户端中远程调用的,验证通过返回token

    7,拿到token后就可以访问资源服务器了,知道要访问的接口并把token带过去,这一步也是通过客户端远程调用的,http://localhost:8080/rest/api/getuserinfo?access_token=a4ae5a76-289d-2356-a421-9652sa857678

    下面是一个客户端通过第三方登录的简图    

     spring-security 理解 笔记     介绍以及使用(持续更新)

 

 

 

  2.密码模式

  3.客户端模式

  4.简化模式