记录一次spring发布的oauth2服务器demo学习——第二步,看全流程网络(二)
设置日志级别
authorization,resource,client日志设置都如下所示
logging: level: # 根日志级别 root: DEBUG # 基础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服务依次启动
详解网络请求
client
发起请求:http://172.18.128.1:9000/.well-known/openid-configuration
,
该请求地址由spring.security.oauth2.client.provider.spring.issuer-uri
配置的地址加上 /.well-known/openid-configuration 。
获取oauth2认证服务相应地址信息
client
接收请求: / ,重定向至Oauth2认证服务
client内部处理
确认sessionid
认证请求
认证失败,保存目标地址1
到session里面
重定向到client
的登录地址(此处为配置的oauth2登录地址)
client
接收请求: /oauth2/authorization/messaging-client-oidc ,该请求传递了client-id,即messaging-client-oidc
,取该client-id下对应的oauth2配置进行相应处理,此处配置为拼接oauth2授权地址
,并重定向。auth
接收请求 /oauth2/authorize ,接收参数如下
参数 | 参数值 | 参数说明 |
---|---|---|
response_type | code | 授权类型 |
client_id | messaging-client | clientId |
scope | openid | 授权访问 |
state | hGMhb9YbTpWvN6Zk9VPSwQLKLS8NyDsdzZKHxKQLhQQ%3D | state,暂未发现实际意义,可作为扩展参数 |
redirect_uri | http://127.0.0.1:8080/login/oauth2/code/messaging-client-oidc | 回调uri,该地址必须和oauth2授权服务配置的一致 |
nonce | Rzc0EFJRvtmC8_zccxZVkWKKMl0MmAPnEbClD4mfSj8 | 暂未发现实际意义 |
auth
内部处理
确认sessionid
认证请求
认证失败,保存目标地址2
到session里面
重定向到auth
的登录地址 http://127.0.0.1:9000/login
auth
接收web
的登录页面请求,返回登录页面视图auth
接收web
的表单登录请求,校验账号密码,登录成功,重定向至目标地址2
。
auth
接收web
的目标地址2
请求,即初始的授权请求,校验授权请求传递的client信息,校验通过,重定向至回调地址redirect_uri,同时带上code参数
client
接收web
的code校验请求:http://127.0.0.1:8080/login/oauth2/code/messaging-client-oidc
通过接口地址确定clientid为 messaging-client-oidc,
然后再向该client对应的aouth2服务校验code获取token,
同时通过jwts获取相应jwt信息,解析token,
认证本次会话session为认证通过session。
从session中去除目标地址1
,重定向到目标地址1
-
client
接收web
的 http://127.0.0.1:8080/ 请求,校验session,认证通过,重定向到 http://127.0.0.1:8080/index
-
client
接收web
的 http://127.0.0.1:8080/index 校验session,认证通过,返回相应视图解析
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律