如何使用SoapUI测试Spring Boot OAuth2授权码流程
问题排查与解决方案
核心操作错误说明
你当前的流程和Spring Security OAuth2默认的授权码登录逻辑不匹配:
浏览器走的是标准OAuth2授权码流程:跳转到Google授权页→Google返回授权码(Auth Code)→Spring后端拿授权码换Access Token→验证通过后下发Session会话凭证。你直接在SoapUI中获取Google的Access Token,默认配置下的Spring Boot项目不会识别请求携带的第三方Token,所以直接用Token访问是无效的。
两种可行测试方案
方案1:复用浏览器的授权码流程(无需修改项目代码)
- 第一步先获取Auth Code:构造Google授权请求,参数必须指定
response_type=code,同时配置和你项目中一致的client_id、redirect_uri(必须和Google Cloud控制台、Spring配置里的回调地址完全匹配,默认是http://localhost:8080/login/oauth2/code/google)以及你配置的授权范围。请求该地址完成Google账号授权后,回调地址的code参数就是你需要的Auth Code。 - 第二步拿到授权码后,直接请求
http://localhost:8080/login/oauth2/code/google?code=你获取的授权码,请求成功后会返回Set-Cookie响应头,其中JSESSIONID就是后续访问的身份凭证。 - 第三步携带上述Cookie发送GET请求到
http://localhost:8080/list即可获取返回数据。
方案2:使用已获取的Access Token直接访问(需添加项目配置)
如果不想走授权码流程,想用已拿到的Google Access Token直接访问接口,需要先修改项目配置适配资源服务器逻辑:
- 引入OAuth2资源服务器依赖:
spring-boot-starter-oauth2-resource-server - 在配置文件中添加JWT校验配置:指定Google的JWT签发地址即可。
配置完成后在SoapUI中发送请求时,Token可以选以下任意一种方式配置,效果完全一致:
- 在Header标签添加字段:键为
Authorization,值为Bearer 你的Access Token - 在Auth标签选择
Bearer Token类型,直接把Access Token填入对应输入框
配置完成后直接发送GET请求到http://localhost:8080/list即可拿到数据。
Spring Security OAuth2 默认端点说明
你需要用到的几个默认内置端点如下,不需要自己实现对应接口:
- Google授权跳转入口:
/oauth2/authorization/google(就是登录页Google按钮对应的跳转地址) - Google授权回调处理端点:
/login/oauth2/code/google - 默认登录页地址:
/login - 默认登出处理端点:
/logout
内容的提问来源于stack exchange,提问作者Priyshrm
相关产品推荐
相关产品推荐

