oauth2 的使用

Oauth2的四种角色:

      举个简单的例子说明下这四个角色:用户 张三 登录CSDN,张三没有注册过CSDN所以他选择微信登录,他使用微信扫描二维码 后的登录成功

      1、资源所有者,在上面的例子中 资源所有者 就是张三这个用户

      2、资源服务器,就是保存用户资源的,就是上面例子中的微信,微信中存储着用户的信息;

      3、客户端,就是上面说的CSDN,就是需要获得用户信息的,在客户端发起授权请求并引导用户去授权服务器获得授权许可;

      4、授权服务器,用于生成token,客户端拿这个token去资源服务器获得用户信息,也是上面例子中的微信;

微信授权认证的简单流程:

       1、客户端首先需要拿公司的营业执照去微信开放平台注册,注册成功后微信开放平台生成appId和appSecret 表示这个客户端在微信中的唯一标识;

       2、用户登录CSDN时选择使用微信扫码登录,用户使用微信扫描二维码后,此时微信开放平台会生成一个token通过二维码中的重定向地址返回给CSDN;

       3、CSDN通过token再次向微信开放平台发起请求,获取用户信息,微信开放平台返回用户信息(包含 user_id,电话、姓名、地址等),CSDN通过这些用户信息是否存在,如果存在则跳转到用户首页,如果不存在则根据这些用户信息创建一个用户;

        在上面的流程中,第二步生成token、第三步中使用token获得用户信息 对应的就是授权服务器和资源服务器,也都是在微信中完成的;

 

Oauth2的四种授权模式:就是获取 token的几种模式

       1、授权码模式:首先通过client_id等获得授权码,然后根据授权码获得token;

       2、简化模式:通过用户名 和 密码就可以获取token;

       3、password模式:用户和密码是在 UserDetailsService 的实现类中指定;

       4、客户端模式:通过 client_id 和 client_secret 就可以获得token;

       除了这四种模式还有刷新令牌获取token的操作,当token过期时使用refresh_token刷新令牌,客户端模式和简化模式获取token时不返回refresh_token 所以无法使用刷新令牌;  

demo的用法:

     下面链接是 oauth2 的使用demo,启动项目中的oauth2-demo, 四种模式的使用参考 AuthorizationServerConfig2 中的注释,当切换不同模式的时候要重启系统、清除浏览器缓存,不然token已经被缓存了看不出效果;

      1、授权码模式:

           (1)、获得授权码:获得授权码

           (2)、获得token

           (3)、根据token访问系统中的方法,我本地使用postman访问系统,需要指定授权类型

        2、简化模式:

              根据client_id即可获得token,需要输入账号密码

        3、password模式:

              根据client_id、client_secret、用户名、密码 获得token

         4、客户端模式:

               根据client_id、client_secret就可以获得token,在上面的微信扫描二维码登录CSDN的场景中就使用的客户端模式

tips: 上面的账号和密码是登录资源服务器的,用微信扫描登录csdn的例子中因为微信本身就是登录的,所以这种场景一般使用客户端模式;      

  demo链接:https://pan.baidu.com/s/1LqkJ_6GJuIHYDjMa2dRshQ?pwd=hpyk 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值