当前位置: 首页 > 知识库问答 >
问题:

如何使用阿帕奇骆驼和http4设置基本身份验证

颛孙天宇
2023-03-14

我正在尝试使用Apache Camel的Http4组件连接到一个需要基本身份验证的HTTP URL。我正在通过Exchange从camel处理器设置凭证。HTTP_QUERY头。我这样配置我的路由:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint ...>

<bean id="myProcessor"
    class="com.myCompany.Bean"
    factory-method="myProcessorBean">
</bean>

<camelContext id="myContext" xmlns="http://camel.apache.org/schema/blueprint">
    
    <route id="myRoute>
        <from uri="activemq:queue:myQueue" />
        <process ref="myProcessor" />
        <to uri="http4://oldhost"/>
    </route>
        
</camelContext>

</blueprint>

我的处理器看起来像:

public void process(Exchange exchange) throws Exception {
  String user = getUserFromDB();
  String pwd = getPasswordFromDB();

  String queryParameters = "authMethod=Basic&authPassword="+pwd+"authUsername="+user;
  exchange.getIn().setHeader(Exchange.HTTP_QUERY, queryParameters);
  exchange.getIn().setHeader(Exchange.HTTP_URI, "api.abc_company.com/service/to/consume");
  ....
}

它导致:

Error myContext: org.apache.camel.http.common.HttpOperationFailedException: HTTP operation failed invoking https://api.abc_company.com/service/to/consume?authMethod=Basic&authPassword=xxxxxx&authUsername=test with statusCode: 401

密码好像改成了xxxxxx,但我不确定。

当我尝试在URI中硬编码用户和密码时,它运行良好,但是我需要一种以编程方式设置这些值的方法,因为用户和密码存储在DB中。

共有1个答案

连乐
2023-03-14

“身份验证方法=基本

你需要看看

尝试:

String queryParameters = "authMethod=Basic&authPassword="+pwd+"&authUsername="+user;

此外,您应该在生产者endpointURI<code>http4://oldhost中定义凭据?authMethod=基本

如果要在处理器中执行此操作,可以尝试使用值 basic 手动设置授权标头

调用失败 api.abc_company.com?

如果您想连接到https站点,请使用< code>https4://

 类似资料:
  • 我正在玩ApacheCamel,在从“琐碎的示例”阶段过渡到“但有这些恼人的细节”阶段时遇到了一些问题。至关重要的是,如何进入并显式修改endpoint。 在这种情况下,我需要为超文本传输协议客户端设置一个auth cookie。我有一个cookie存储对象,但不知道如何强制客户端使用它。我试过使用,但没有公开cookie存储,而且它似乎也没有被调用。 我现在的代码: 并由以下人员调用: 知道我如

  • 我们需要的是直接的API来设置和使用集群消息队列。我们最初的计划是使用Camel在集群JMS或ActiveMQ队列上进行消费/生产。Kafka如何使这项任务变得更容易?在任何一种情况下,应用程序本身都将在WebLogic服务器上运行。 消息传递将是点对点类型,其中有多个相同服务的实例在运行,但根据负载平衡策略,只有一个实例应该处理消息并发出结果。消息队列也是群集的,因此服务实例或队列实例的失败都不

  • 我试图使用Apache Camel Quartz2实现一个调度器,它每分钟执行一次路由,并按预期执行一些任务。我使用spring DSL实现与apache camel相关联的路由,如下所示: 根据日志,它不会记录为路由记录的消息,例如Direct:DomainsWithFTPUsers等等。请指导如何实现同样的目标。

  • 遵循官方文件(https://camel.apache.org/manual/component-dsl.html#_using_component_dsl)我创建了以下代码: 但是中的告诉我: 并且中的特性不建议导入相应的库。 有人能给我指出正确的方向吗? 我必须理解的概念才能做到这一点吗?

  • 考虑到apache Camel,我有一个问题:是否可以通过代码来创建全局拦截器,例如AOP?拦截器应该跳过endpoint还是模仿endpoint? 提前致谢

  • 使用Java和Spring 3.x,我正在使用apache camel route制作和消费基于Spring的事件。我很惊讶谷歌搜索没有返回任何有意义的结果。我指的不是一个使用apache camel和spring-event组件的例子。 以下是我的事件对象/发布者/侦听器,有人可以帮助我使用apache骆驼Spring event:// DSL转换它。 任何帮助是值得赞赏的。 我的自定义事件类