记录一次spring发布的oauth2服务器demo学习——第二步,看全流程网络(一)

修改日志级别

修改application.yml文件,日志级别调整,authorization、resource、client服务,日志级别都修改为下配置
日志配置说明

logging:
  level:
    # 根日志级别
    root: INFO
    # 基础web相关日志级别
    org.springframework.web: DEBUG
    # security相关日志级别
    org.springframework.security: DEBUG
    # oauth2相关日志界别
    org.springframework.security.oauth2: DEBUG
    # spring-boot自动配置日志级别
    org.springframework.boot.autoconfigure: INFO

依次启动authorization、resource、client服务。

image

浏览器查看网络跳转

以下结果都是站在浏览器的角度看网络请求

. 尝试访问client首页 http://127.0.0.1:8080

页面最终停留在authorization服务登录页面,中间经历了几次重定向,我们一次一次的看
image

第一次网络请求地址为:http://127.0.0.1:8080 这就是我们初次浏览器输入想访问的地址

image

第二次网络请求地址为:http://127.0.0.1:8080/oauth2/authorization/messaging-client-oidc 这是client服务配置的oauth2Login登录地址。

image
image

第三次网络请求地址为:http://172.18.128.1:9000/oauth2/authorize?response_type=code&client_id=messaging-client&scope=openid&state=DIRjSwj2CpK54pikJFmo_Kx8kKQK1BLeGKDk7ZdbdDQ%3D&redirect_uri=http://127.0.0.1:8080/login/oauth2/code/messaging-client-oidc&nonce=HaMxUSWOXf8_DJqPHRWtMsiBl8SAcBvUin9Ikd_dgSc 由第二次网络请求到client 服务,传入的messaging-client-oidc匹配到application.yml配置的oauth2认证服务配置。然后拼接出oauth2登录地址,访问authorization 服务授权地址。

image
image

第四次网络请求地址为:http://172.18.128.1:9000/login 由于第三次网络请求到authorization 服务,发现没有登录,就跳转至登录页面

image

authorization服务输入正确的账号密码,登录。

页面最终停留在http://127.0.0.1:8080/index 之所以不是 http://127.0.0.1:8080 是因为访问 http://127.0.0.1:8080 的时候client服务内部进行了一次重定向。
image
image
image
image

第一次网络请求地址为:http://172.18.128.1:9000/login 上一批次浏览器访问的最后一个请求,改访问由前面的几次重定向最终确定,改请求与authorization 服务之间的session保存了前面第三次网络请求的实际目标地址,登录过后会自动跳转至目标地址。如果手动输入 http://172.18.128.1:9000/login 访问,则目标地址为authorization 服务默认登录成功跳转地址(默认为 '/')。

image

第二次网络请求地址为:http://172.18.128.1:9000/oauth2/authorize?response_type=code&client_id=messaging-client&scope=openid&state=DIRjSwj2CpK54pikJFmo_Kx8kKQK1BLeGKDk7ZdbdDQ%3D&redirect_uri=http://127.0.0.1:8080/login/oauth2/code/messaging-client-oidc&nonce=HaMxUSWOXf8_DJqPHRWtMsiBl8SAcBvUin9Ikd_dgSc 这是登录前的实际目标地址。该地址传入了oauth2协议所需要的 认证类型,对接客户id,授权范围,回调地址(state,nonce这两个参数不是必要的,之所以有是为了扩展功能,为client添加自定义的回传数据),还有需要注意的就是本authorization服务中的授权类型参数传递key改成了response_type

image

第三次网络请求地址为:http://127.0.0.1:8080/login/oauth2/code/messaging-client-oidc?code=rEPcXjkFqwu8bTQ269NfGgtNAWo41NBjyEkTY4B_We1p2SM1r4hl_Zj0sHDNI-FpMCq9-YjIskojxhAcjmRzwyMbNWmNIDUDqNDa9kyxzaqgeMSazsbBLwoGgipyV8VY&state=DIRjSwj2CpK54pikJFmo_Kx8kKQK1BLeGKDk7ZdbdDQ%3D 上次网络请求带了一下client校验参数给authorization 服务,确认是合法的client后,回跳至指定的redirect-url。并带上code

image

第四次网络请求地址为:http://127.0.0.1:8080/ 就是我们最初在浏览器输入的client 服务首页地址。这是由于回传的code,在client 服务经过一系列操作认证成功。故回跳至我们最初的目标访问地址。
上一篇提到的官方说的串session cookie,其实就是这个目标地址,注意,我们在`client 服务` 与`authorization 服务`都有一个目标地址,这个地址都是与浏览器访问的session绑定的,而如果ip是一样的话就可能出问题。过去看到过这个机制,有空找下代码再补充。

image

第五次网络请求地址为:http://127.0.0.1:8080/index 这个就是client 服务的简单访问重定向

image
image

authorization、client、resource 服务角度看网络请求

统一配置日志级别,除了logging.level.root设置为INFO,别的都设置为DEBUG,便于查看有哪些请求。
不设置为ROOT的话,关于请求的请求头信息会不显示,但是设置为ROOT的话,会显示一大批日志出来,不便于我们查找接口,所以我们先这样确定有哪些接口请求,再设置打开ROOT的debug
image

以下内容是真正的重点,不止包含了浏览器发起的网络请求处理,也会有后台服务之间的网络请求
以下内容说明
clientclient 服务
authauthorization 服务
resourceresource服务
web浏览器
client地址:http://127.0.0.1:8080
auth地址:http://172.18.128.1:9000
resource地址:http://172.18.128.1:8090

简单过一遍网络请求流程

  1. client接收web/ 请求。未登录,重定向至 /oauth2/authorization/messaging-client-oidc
  2. client接收web/oauth2/authorization/messaging-client-oidc 请求,重定向至 http://172.18.128.1:9000/oauth2/authorize
  3. auth接收web/oauth2/authorize 请求。未登录,重定向至 /login 登录页面
  4. auth接收web等表单登录请求,校验登录成功,重定向至 /oauth2/authorize
  5. auth接收web/oauth2/authorize 请求。重定向至 http://127.0.0.1:8080/login/oauth2/code/messaging-client-oidc 地址。
  6. client接收web/login/oauth2/code/messaging-client-oidc 请求,向auth服务器发送code校验请求,地址为:http://172.18.128.1:9000/oauth2/token 获取jwt相应参数获取请求,地址为:http://172.18.128.1:9000/oauth2/jwks。获取token,jwks后,为session设置登录状态,重定向至初始目标地址 /
    1. auth接收client/oauth2/token 请求,返回token
    2. auth接收client/oauth2/jwks 请求,返回jwt相关信息
  7. client接收web/ 请求,重定向至 /index
  8. client接收web/index 请求,返回相应视图

文章太长了,详解网络请求放下一篇:
记录一次spring发布的oauth2服务器demo学习——第二步,看全流程网络(二)

posted @ 2021-10-15 16:02  临渊不羡渔  阅读(389)  评论(0编辑  收藏  举报