[英]spring boot microservice framework how to call another microservice from one microservice
[英]how to forward requests to another microservice using Spring?
我们希望使用 spring 安全性来提供“身份验证”服务,其中:
userid
添加到 http header使用 Spring 实现这种转发的最简单方法是什么?
对于这个用例,我们可以创建一个新的 Spring 启动应用程序(主要称为 API 网关),它启用 Zuul 代理 ( EnableZuulProxy )。 创建一个自定义 Zuul PRE_TYPE
过滤器来解析所有传入的请求。 它的目标是检查传入的请求是否包含令牌,然后调用身份验证服务,检索调用者的信息并将用户的标识符添加到自定义 header 中。
一旦传入请求通过所有过滤器,然后使用zuul.routes.*
属性将请求转发到适当的服务。
要调用远程服务(在本例中为身份验证服务),我们可以使用 Spring 的RemoteTokenServices class。 并且, BearerTokenExtractor class 用于从传入请求中提取令牌。 这是帮助您入门的示例代码:
@Override
public Object run() {
final RequestContext requestContext = RequestContext.getCurrentContext();
final HttpServletRequest request = removeCustomHeaders(requestContext.getRequest());
requestContext.setRequest(request);
final Authentication authentication = tokenExtractor.extract(request);
if (Objects.nonNull(authentication)) {
try {
final OAuth2Authentication oAuth2Authentication = tokenServices.loadAuthentication(authentication.getPrincipal().toString());
final Map<String, String> userAuthDetails = (Map<String, String>) oAuth2Authentication.getUserAuthentication().getDetails();
requestContext.addZuulRequestHeader(USERNAME_HEADER, oAuth2Authentication.getPrincipal().toString());
// Add other required information in headers.
}
catch(final AuthenticationException | RestClientException |OAuth2Exception e){
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.