当前位置: 首页 > 知识库问答 >
问题:

如何使用带有连接池和基本身份验证的REST客户端?

田巴英
2023-03-14

我目前有:

  • 作为独立应用程序运行的REST API(泽西)
  • REST API客户端的GUI应用程序(JSF)

我想知道从GUI应用程序与REST API对话的最佳方式是什么。REST API是无状态的,但GUI应用程序是有状态的,必须在每个REST请求中传递身份验证信息(基本身份验证)。因为我们必须同时支持数百个用户,所以我们希望将Jersey客户端配置为连接池。

我们可以通过配置Jersey客户端和Apache的HTTP客户端来处理连接池。可以通过使用HTTPBasicAuthFilter来处理身份验证,它会在每次请求时自动发送相同的凭据。

但是,我不确定是否最好为整个GUI应用程序配置一个客户端,或者为每个会话创建一个新客户端。

由于应用程序只有一个客户端,连接池是有意义的,但是我必须找到一种方法来为每个请求设置正确的身份验证信息。HTTPBasicAuthFilter假设凭据永远不会更改,但我们的应用程序却不是这样。

如果我在每个会话中创建一个具有新的HTTPBasicAuthFilter的客户端,那么身份验证是微不足道的,但是我没有从连池中获得任何好处,因为每个客户端都有自己的池。

我怀疑我是第一个遇到这个问题的人,所以我很好奇其他人是如何解决这个问题的。

亲切的问候,

格伦

共有1个答案

薛楷
2023-03-14

您可以在WebResource级别附加客户端筛选器。因此,您可以将HTTPBasicAuthFilter附加到单个共享客户端和每个会话的WebResource对象。

 类似资料:
  • 我有一个django rest_framework API、Swagger和一个Swagger UI。当我没有登录时,我只能看到非常有限的“登录”和“文档”视图。当我登录后,我可以看到很多东西。 我正在尝试使用swagger-代码生成客户端: 然而,它只生成一个非常有限的客户端,提供“登录”和“文档”功能。 如何让 swagger-codegen 知道如何使用 http 基本身份验证登录,以便生成

  • 我是Spring Security的新手 我有Sprint Boot Rest API项目,它公开了某些API。我已经为所有API实现了基于承载令牌的身份验证。例如 /user、 /resource、 /appointment 现在,对于特定控制器的几个api,我希望实现基本身份验证。这些API将被另一个不公开的服务使用。为了保证API的安全性,我希望为这些apis提供基本身份验证。例如 /int

  • 问题内容: 我在Glassfish之上创建了一个JAX-WS Web服务,它需要基本的HTTP身份验证。 现在,我想为该Web服务创建一个独立的Java应用程序客户端,但是我不知道如何传递用户名和密码。 它可以与Eclipse的Web Service资源管理器一起使用,并检查连接线,我发现了这一点: 如何使用Java代码在此“授权”标头中传递用户名和密码?是散列还是类似的东西?什么是算法? 没有涉

  • 我试图使用curl检索jira问题从我的公司服务器没有任何运气到目前为止。 我已经测试了这里描述的两个示例JIRA REST API示例-基本身份验证,但没有成功。我对我的用户和密码进行了base64编码,如“提供基本身份验证头”示例中所述,并输入了我想要获得的问题的url。我在浏览器中测试了url,得到了json文档,因此url是正确的。 这就是我的命令 someuser@somehost:~$

  • 问题是当我尝试验证: 正文: 我总是有一个401错误状态,因为我的自定义入口点。在我看来,spring security并没有调用Authentication-Manager。我错过什么了吗?

  • 问题内容: Jsoup中是否可以通过基本访问身份验证从网站加载文档? 问题答案: 使用HTTP基本访问身份验证时,您需要发送标头以及一个值。 例如(在Apache Commons Codec Base64的 帮助下): (为了简便起见,省略了字符编码的明确说明,因为登录名和密码通常很简单;此外,Base64总是生成字节)