Java 传递身份验证标头并将其添加到下一个请求
我有一个问题可能很简单,但我已经被困了一段时间了。我有一个程序,它接收请求,然后将它们转发到第三方应用程序的正确实例中 我不断地得到401/未经授权,有人告诉我,我需要做的就是让它工作“我将从客户端获得一个带有身份验证头的请求,我需要做的就是将该身份验证头添加到我的请求中,以摆脱401响应并获得200。我不明白如何在第一时间得到这个标题,或者将它添加到我的请求中 任何指针、链接或答案都将不胜感激。 多谢各位Java 传递身份验证标头并将其添加到下一个请求,java,spring,request,postman,Java,Spring,Request,Postman,我有一个问题可能很简单,但我已经被困了一段时间了。我有一个程序,它接收请求,然后将它们转发到第三方应用程序的正确实例中 我不断地得到401/未经授权,有人告诉我,我需要做的就是让它工作“我将从客户端获得一个带有身份验证头的请求,我需要做的就是将该身份验证头添加到我的请求中,以摆脱401响应并获得200。我不明白如何在第一时间得到这个标题,或者将它添加到我的请求中 任何指针、链接或答案都将不胜感激。 多谢各位 @RestController @Slf4j @RequestMapping(Endpo
@RestController @Slf4j
@RequestMapping(Endpoints.PROVIDER.ROOT)
@PreAuthorize("@permissions.checkIfAdmin()")
public class AdminController {
@PostMapping(Endpoints.ADMIN.ACTIONS)
public ResponseEntity<ActionResponse> actions(@RequestBody ActionRequest actionsRequest) {
@RestController@Slf4j
@RequestMapping(Endpoints.PROVIDER.ROOT)
@预授权(@permissions.checkIfAdmin())
公共类管理员控制器{
@后期映射(Endpoints.ADMIN.ACTIONS)
公共响应实体操作(@RequestBody ActionRequest actionsRequest){
自动连线HttpServletRequest
@Autowired
HttpServletRequest request;
并通过方法request.getHeader(“授权”)获取标头
注意-Authorization是我试图获取的头的名称
下面是一个类似问题的示例。我正在从当前请求中读取授权标头,并将其作为标头参数传递给另一个请求
public class UserDetailsService
{
@Autowired
WebClient.Builder webClientBuilder;
@Autowired
HttpServletRequest request;
@Value("${common.serverurl}")
private String reqUrl;
Logger log = LoggerFactory.getLogger(UserDetailsService.class);
public UserReturnData getCurrentUser()
{
log.info("Making API Call to fetch current user");
try
{
UserReturnData userDetails = webClientBuilder.build()
.get()
.uri(reqUrl+"user/me")
.header("Authorization", request.getHeader("Authorization"))
.retrieve()
.bodyToMono(UserReturnData.class)
.block();
return userDetails;
}
catch(Exception e)
{
log.info("Error API Call to fetch current user " + e);
return null;
}
}
取决于您是否正在使用任何框架或库,但可以通过以下方式从低级传入的HttpServletRequest访问客户端标头:
header authHeader=request.getHeader(HttpHeaders.AUTHORIZATION);
然后将authHeader
添加到发送给第三方的请求中。谢谢。我使用spring框架,我的控制器类看起来像我在更新后的帖子中发布的代码。这可能有助于您直接使用该标题-将其添加为控制器参数:@RequestHeader(HttpHeaders.AUTHENTICATION)字符串authHeader
(如果标头始终由客户端发送)。请查看以下内容: