java - 在 Camunda 的 ExternalTaskClient 中启用 HTTPS
问题描述
你好,camunda 用户,目前我正在开发一个项目,我正在使用来自 Camunda的外部任务客户端。
我问自己是否有可能让 ExternalTaskClient 使用 Https ?
我看了看 Jar,找不到任何关于如何处理这个问题的提示。我看到代码阻止了通过 Apache 的 HttpClientBuilder 初始化其 HttpClient 的 RequestExecutor。
HttpClientBuilder httpClientBuilder = HttpClients.custom()
.useSystemProperties()
.addInterceptorLast(requestInterceptorHandler);
this.httpClient = httpClientBuilder.build();
我又看了一下拦截器和基本身份验证的文档,并认为我可以通过 CustomInterceptor 实现 Https。但是 CustomInterceptor 只是将附加信息添加到 http 标头。
之后我再次开始搜索,发现以下关于支持 HTTPS的问题。阅读评论,我看到了一个Pull Request,主要处理 Apache HttpClient 的自定义及其在 RequestExecutor 中的创建。公关从未合并...
长话短说,ExternalTaskClient 是否支持 Https ?(即使有解决方法)
最好的问候托马斯
编辑: 我从 ExternalTaskClientBuilderImpl 扩展了我的名为 SSLExternaTaskClientWrapper 的类,覆盖了 initEngineClient() 方法,并为从 RequestExecutor 扩展的 RequestExecutor 实例化了一个包装器,并覆盖了 Apache HttpClient 的初始化。就像这个线程中的“mnowrot”所说的那样。我没有调用 ExternalTaskClient.create() 来创建新的 ExternalTaskClient,而是实例化了我的 SSLExternalTaskClientWrapper。
优点:
- 可以使用 SSL/TLS 上下文设置 HTTP 客户端
缺点:
- 每次更新 ExternalTaskCLient 的维护
- 如果 HttpClient 被私有化和/或 initHttpClient() 方法被私有化,这个解决方案就可以处理垃圾了,这意味着它很容易受到攻击。
总结一下,我不得不说,在它可以通过 Https 执行请求之前,我在某些生产环境中看不到外部任务客户端。好像我必须自己去取和拉。
我的问题仍然存在:)
解决方案
推荐阅读
- shopify - 无法在 shopify 应用程序桥中选择产品
- laravel - 在 Laravel 中使用 Storage 门面删除通配符文件
- python - "db.list_tables(library='taq')" 返回一个空列表。为什么?
- html - css scroll-snap 属性跳过后续页面
- c - 我在链表开头插入数字的代码无法编译
- angular - identityserver 发现文档第一次慢(well-known/openid-configuration)
- javascript - 如何使用自定义转换函数将一种泛型类型的结构映射到另一种,使其在编译时保持类型安全?
- haskell - 如何在 Haskell 中访问没有记录语法的自定义数据类型的字段?
- python - Gurobi 使用 Python:生成器的模型开/关状态
- flutter - 如何在 Flutter 中的 BottomSheet 上重叠按钮?