oauth认证插件signpost和httpclient并发一起使用时产生的问题

2013-09-04 08:38:24,218=2013-09-04 08:38:24,231 DEBUG [ org.apache.http.client.protocol.RequestAddCookies] - CookieSpec selected: best-match 
 2013-09-04 08:38:24,231=2013-09-04 08:38:24,231 DEBUG [ org.apache.http.client.protocol.RequestAddCookies] - Cookie [version: 0][name: smt][value: b52549d064504c268a6cd0e481e90987%26464443fd9f151563d3647ffe4fb5e3e9][domain: fund123.cn][path: /][expiry: null] match [(secure)trade.fund123.cn:443/fundapi/account/userinfo] 
 2013-09-04 08:38:24,231=2013-09-04 08:38:24,231 DEBUG [ org.apache.http.client.protocol.RequestAddCookies] - Cookie [version: 0][name: user][value: hKRum+K7n166D3ohPIuIL1M1NaZMfFflNe6AmT87yd5OTbhkZ1BjlSjSwZtYfOOWTEO4+2jahu9Ejc1n0eKOTY/poy9fz0jjSRInhJGOMlY0E85lhoKus9L7jkuDR95a/oUY3NBvcTUoL6D0Jx2e3Kti5XBJQuH6][domain: fund123.cn][path: /][expiry: null] match [(secure)trade.fund123.cn:443/fundapi/account/userinfo] 

 2013-09-04 08:38:24,231=2013-09-04 08:38:24,231 DEBUG [ org.apache.http.client.protocol.RequestAddCookies] - Cookie [version: 0][name: userMenu][value: var User={ ID:"3522549", Name:"liming19860707", DYFlag:10, IsApply:false, IsVIP:false, Company:[], FavoriteFund:""}********!!][domain: fund123.cn][path: /][expiry: null] match [(secure)trade.fund123.cn:443/fundapi/account/userinfo] 


由于该插件的oauth认证信息放在头部,而httpclient的并发会复用链接的头部,因此可以看到Name:"liming19860707"此信息被本来不该属于该用户的链接共享了,因此发生认证混淆

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HttpClient是一个常用的HTTP客户端工具,用于发送HTTP请求和接收HTTP响应。在进行OAuth认证,可以使用HttpClient来实现。 首先,需要导入HttpClient的相关包,并创建一个HttpClient实例。可以使用以下代码创建一个默认的HttpClient实例: ``` CloseableHttpClient httpClient = HttpClients.createDefault(); ``` 接下来,需要构建OAuth认证请求。OAuth认证通常涉及授权码的获取、令牌的申请和刷新等步骤。可以使用HttpClient的HttpPost或HttpGet类来构建相应的请求。例如,使用HttpPost构建一个获取授权码的请求: ``` HttpPost request = new HttpPost("https://oauth.example.com/authorize"); request.setHeader("Content-Type", "application/x-www-form-urlencoded"); request.addParameter("client_id", "your_client_id"); request.addParameter("redirect_uri", "your_redirect_uri"); request.addParameter("response_type", "code"); ``` 然后,发送认证请求并接收响应。可以使用HttpClient的execute方法发送请求并接收响应。例如: ``` CloseableHttpResponse response = httpClient.execute(request); ``` 接收到响应后,可以从响应中获取认证相关的信息。例如,可以从响应的实体中获取认证授权码: ``` HttpEntity entity = response.getEntity(); String authCode = EntityUtils.toString(entity); ``` 接下来的步骤根据具体的OAuth流程会有所不同,可以根据实际需求进行令牌的申请、刷新等操作。 需要注意的是,在进行OAuth认证,可能会涉及到授权头信息等安全相关的操作。可以通过HttpClient的方法设置请求头信息来确保安全性。 总之,使用HttpClient进行OAuth认证需要创建HttpClient实例、构建认证请求、发送请求并接收响应,然后根据具体的OAuth流程进行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值