一个客户端在我的SpringCloudGateway2上用它的证书点击了一条路由。我成功地使用x509身份验证对客户端进行了身份验证,然后,在将请求转发到下游服务之前,我想将主体名称添加到请求的cutom头中。
我已经创建了过滤器,但无法将主体名称放入标题值中。
下面是我的网关过滤器应用方法实现
@Override
public GatewayFilter apply(Config config) {
return new GatewayFilter() {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
Mono<String> clientName = ReactiveSecurityContextHolder.getContext()
.map(SecurityContext::getAuthentication)
.map(Authentication::getName);
String headerValue = getClientNameFromMono(clientName);
ServerHttpRequest request = exchange.getRequest().mutate()
.headers(httpHeaders -> httpHeaders.add("X-Client-name", headerValue)).build();
return chain.filter(exchange.mutate().request(request).build());
}
问题是如何正确设置Headervalue,clientName.block()抛出异常...有什么建议吗?
解决了的。我发现TokenRelayGatewayFilterFactory做的事情非常符合我的需要。以下是我所做的:
@Override
public GatewayFilter apply(Config config) {
return (exchange, chain) -> exchange.getPrincipal()
.map(Principal::getName)
.map(clientName -> withCustomHeader(exchange, clientName))
.defaultIfEmpty(exchange).flatMap(chain::filter);
}
private ServerWebExchange withBearerAuth(ServerWebExchange exchange, String clientName) {
return exchange.mutate()
.request(r -> r.headers(headers -> headers.add("X-client-name", clientName)).build();
}
它就像一个符咒!!
我不熟悉spring微服务世界。由于我处于学习阶段,我尝试并实施了以下内容。 > 路由(能够使用Spring云网关进行路由) 负载平衡(Netflix Eureka) 限速和断路器 我只需要一些澄清和建议,说明在这些情况下该怎么做: 因为我已经创建了身份验证/授权作为一个单独的微服务集中。现在我如何实现这样的每个请求必须包含jwt令牌和通过API网关调用其他微服务也应该检查哪个用户有权限访问其他微
我试图建立一个新的服务器,作为网关(使用sping-Cloud-网关作为基础),我需要能够在实际转发任何后续请求之前通过远程LDAP服务器验证用户。我将如何实现这个(包,配置等)?
我想通过Spring Cloud介绍Zuul作为一个API网关在少数服务前面。 我关心的问题: > 网关将位于许多服务的前面 某些服务可能公开不需要身份验证的endpoint null
我已经安装了OpenLDAP服务器。 如何在LDAP服务器中添加用户(条目)?以及如何打开该服务器的命令窗口,以便在其上运行ldap命令: :我的要求是:在我的应用程序中,我想对Openldap服务器中添加的用户进行身份验证,但我只能在windows os上安装Openldap服务器,但如何添加用户我无法获得方法。在Windows7操作系统上安装openLDAP whic时添加用户的方法是什么?这
我想添加只允许经过身份验证的用户在Jitsi会议中创建会议的功能。我看到了外部API的jwt参数、config.tokenAuthUrl和lib-jitsi-met令牌文档,但我对如何将它们放在一起感到非常困惑。 现在,我的工作流程如下: 用户通过自定义应用程序登录谷歌。 用户被重定向到一个新的Jitsi会议,使用从Google登录信息派生的jwt参数。 我遇到的问题是验证这个令牌,以及如何设置它