程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

用新的 WebClient API 替换 Spring KerberosRestTemplate

发布于2021-08-02 20:22     阅读(1186)     评论(0)     点赞(18)     收藏(4)


我正在尝试用 WebClient API 替换现有的 Spring KerberosRestTemplate。那么在新的 WebClient API 中是否为 Kerberos 提供了任何支持?

任何帮助将不胜感激,即使指向一些教程/文档也会有所帮助。


解决方案


您需要创建一个ExchangeFilterFunction实现,它检查 WWW-Authenticate 标头,然后使用授权标头重新发送请求。

    @Override
    public Mono<ClientResponse> filter(final ClientRequest request, final ExchangeFunction next) {
        return next.exchange(request)
                .flatMap(response -> {
                    final Set<String> headerValues = Sets.newLinkedHashSet(response.headers().header(HttpHeaders.WWW_AUTHENTICATE));
                    if (headerValues.contains("Negotiate")) {
                        final String authHeader = doAs(new CreateAuthorizationHeaderAction(userPrincipal, "HTTP/" + request.url().getHost()));
                        final ClientRequest authenticatedRequest = ClientRequest.from(request)
                                .header(HttpHeaders.AUTHORIZATION, "Negotiate " + authHeader)
                                .build();
                        return next.exchange(authenticatedRequest);
                    }
                    return Mono.just(response);
                });
    }

您可以在此处取消 CreateAuthorizationHeaderAction 的实现



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/253651/4808b42b797c9184a59f/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

18 0
收藏该文
已收藏

评论内容:(最多支持255个字符)