SpringCloud+OAuth2.0+SpringSecurity遇到的一个问题(2)

背景:

  • 我在做一个单点登录的系统,目前已成功实现在认证服务器认证以后,去资源服务器拿资源。

项目描述:

  • ResourceServer-8001 ---> 资源服务器
  • AuthenticationServer-8002 ---> 认证服务器
  • Client-8003 ---> 单点登录客户端

遇到的问题:

img

img

img

  • 以上是OAuth2.0授权码模式,获取授权码的步骤。
  • 假如现在是向微信申请认证,获取微信个人信息的话。像我们都是打开微信扫一扫,点击确认授权,单点登录就自动实现了。
  • 我了解过,似乎向OAuth2.0获取资源的话,似乎一定要先经过springsecurity的认证。

我的猜想:

  • 是否在微信扫码登录的过程中,后台已经帮我们处理好了截图中的步骤?

要解决的问题:

  • 如果我的猜想正确,那么要怎么在后台对这一部分进行处理呢?因为访问 http://localhost:8002/oauth/authorize?client_id=douban&response_type=code 的话,它会返回一个页面让我们进行认证,认证通过以后,才会返回授权码,我不清楚后台要怎么获取到这个页面,然后把账号密码写进去。
  • 如果我的猜想不正确,那么后台是做了什么来实现我提到的这个点呢?

微信扫一扫只是获取预授权码,当用户同意授权之后资源服务器才会发放预授权码code,根据预授权码、appId和appKey等信息向认证服务器申请令牌token,只有认证成功了才会最终允许发放token,允许用户登录

扫码其实就是请求接口,你扫码相当于请求http://localhost:8002/oauth/authorize?client_id=douban&response_type=code这个链接,然后后端返给你一个后端的地址,这个地址可以是一个页面,这个页面就你说的认证页面。

微信是默认知道你的账号信息。如果你要自己填账号授权,不就是验证码登录的逻辑么。扫码》跳转到登录授权页面》这个时候后端返回你一个授权码》然后前端输入账号密码+后端返回的授权码请求授权》授权完成