如何将spring.security.oauth2.client与SOAP调用一起使用,SOAP调用最初由org.springframework.ws.client.core.WebServiceTemplate发送?

p1iqtdky  于 2023-02-12  发布在  Spring
关注(0)|答案(1)|浏览(121)

bounty将在6天后过期。回答此问题可获得+50的声望奖励。Eljah正在寻找规范答案

我们有一个Sping Boot 微服务,它使用org.springframework.ws.client.core.WebServiceTemplate对外部系统执行SOAP调用。
现在,系统将使用Keycloak进行保护,因此所有请求都需要使用auth令牌。
如果是REST API,我只需要用OAuth2RestTemplate替换先前存在的RestTemplate,但是如何插入最初由org.springframework.ws.client.core.WebServiceTemplate执行的调用呢?
所以,我明白了,我应该手动地把authentication标头与值'Bearer ....token there...'放在一起,我怎样才能手动地检索那部分并把它放到请求中呢?

9jyewag0

9jyewag01#

你可以使用RequestContextHolder类获得当前请求令牌,并添加到soap请求报头中。

String token = ((ServletRequestAttributes)(RequestContextHolder.getRequestAttributes())).getRequest().getHeader("Authorization");

另外,我建议使用Webservice interceptor,而不是在每个Web服务请求调用中添加头部。

相关问题