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

一次基本认证

殷宾白
2023-03-14

我开发了一个spring启动应用程序。当我需要执行REST请求时(POST、PUT…)我每次都使用这样的基本身份验证

HttpEntity<PostJql> httpEntity = new HttpEntity<PostJql>(post, jiraUtils.getHeader());
        ResponseEntity<IssueDataWrapper> response = restTemplate.exchange(urlJiraResponse, HttpMethod.POST, httpEntity, IssueDataWrapper.class);

有没有另一种方法可以在应用程序中进行一次基本身份验证,然后在没有基本身份验证的情况下使用RestTem板或http Post{放/删除...}?

顺致敬意,

共有1个答案

严昊昊
2023-03-14

对使用满足您需要的clienthtprequestfactory配置您的restemplate

您可以在构造函数中设置它:

  restTemplate = new RestTemplate(requestFactory);

... 或者你可以把所有这些东西都做成豆子,然后让Spring把它们连接起来。

您可以扩展SimpleClientHttp刚需工厂,覆盖createRequest()

 public class BasicAuthSimpleClientHttpRequestFactory 
        extends SimpleClientHttpRequestFactory {

     @Override
     public HttpClientRequest createRequest(URI uri, HttpMethod httpMethod) {
         HttpClientRequest request = super.createRequest(uri, httpMethod);
         HttpHeaders headers = request.getHeaders();
         headers.add(... your auth header ...);
         return request;
     }
 }

...或者您可以引入Apache HttpComponents作为依赖项,并使用HttpComponentsClientHttp刚需工厂,并配置基础ApacheHttpClient来执行您需要的身份验证。Apache详细记录了这一点,但为了让您开始:

    BasicCredentialsProvider credentialsProvider = 
         new BasicCredentialsProvider();

    credentialsProvider.setCredentials(AuthScope.ANY, 
        new UsernamePasswordCredentials("user", "password"));

    HttpClient client = HttpClientBuilder.create()
        .setDefaultCredentialsProvider(credentialsProvider)
        .build();

    RestTemplate restTemplate = new RestTemplate(
        new HttpComponentsClientHttpRequestFactory(client));

根据我的经验,如果可以的话,引入ApacheHttpComponents是值得的——它比默认情况下使用的基于HttpUrlConnection的HTTP客户端更加可靠和可配置。当您的需求扩展到其他身份验证方法、超时、重试策略等方面时,您会很高兴有一个HttpClient来配置。

 类似资料:
  • 基本认证在 Web 应用中是非常流行的认证机制。 基本身份验证通常用于无状态客户端,它们在每个请求中传递其凭证。 将其与基于表单的认证结合使用是很常见的,其中通过基于浏览器的用户界面和作为Web服务来使用应用。 但是,基本认证将密码作为纯文本传输,是不安全的,所以它只能在真正通过加密的传输层(如HTTPS)中使用。 在 jpa-userdetailsservice项目的基础上,我们构建了一个bas

  • 我目前正在运行一个Node.js应用程序,有一个应用程序接口和文件服务(我知道nginx可以处理它,但我一开始不应该使用它)。 我只是用它来做一个简单的基本认证,碰巧没那么简单。 这是我的nginx配置: 文件只是,很好。 使用此配置,当我转到我的IP时: 询问我用户和密码 开始加载页面 (有时)再次询问用户和密码 完成以加载页面 到目前为止还不错,即使它问了两次密码。 Node.js应用程序具有

  • 问题内容: 我正在尝试使用Spring Security做一个非常简单的基本身份验证。我已经正确配置了名称空间,并且服务器中没有异常。在我的“ servlet.xml”中,我获得了Spring Security的下一个: 几乎一切都完美了:没有的方法不会提示任何登录表单,而方法会提示它。问题是,或者,都不能登录那里。谁能看到我在做什么错? 提前致谢!;-) 问题答案: 自动应答 T_T为此,我花了

  • 我正在为一个新项目使用OkHttp库,它的易用性给我留下了深刻的印象。我现在需要使用基本身份验证。不幸的是,缺少可用的示例代码。我正在寻找一个示例,说明在遇到HTTP 401头时如何将用户名/密码凭据传递给OkAuthenticator。我看到了这个答案: 改装带有基本HTTP身份验证的POST请求:“无法重试流式HTTP正文” 但这并没有让我走得太远。OkHttp github repo上的示例

  • 最近,我对REST服务使用Spring Security basic身份验证。 我希望浏览器总是提示我基本身份验证,因为我将create-session属性设置为never。 我是不是漏掉了什么?

  • BasicAuth (基本认证) 中间件 BasicAuth 中间件提供了 HTTP 的基本认证方式。 对于有效的请求则继续执行后面的处理。 对于无效的请求,返回”401 - Unauthorized”响应。 用法 e.Use(middleware.BasicAuth(func(username, password string, c echo.Context) (bool, error) {