我尝试使用基本身份验证在Mule中进行外部HTTPS调用。以下是我的申请摘录:
<http:request-config name="HTTPS_Request_Configuration" protocol="HTTPS" doc:name="HTTP Request Configuration">
<http:basic-authentication username="username" password="password"/>
<tls:context>
<tls:key-store type="jks" path="keystore.jks" alias="mule" keyPassword="password" password="password"/>
</tls:context>
</http:request-config>
<flow name="get:/clients/{clientId}:api-config">
<logger message="#['Retrieving client with ID: ' + flowVars['clientId']]" level="INFO" doc:name="Logger"/>
<http:request config-ref="HTTPS_Request_Configuration" path="/api/clients/{clientId}" method="GET" host="host.com" port="443" doc:name="HTTP">
<http:request-builder>
<http:uri-param paramName="clientId" value="#[flowVars['clientId']]"/>
</http:request-builder>
<http:success-status-code-validator values="0..599"/>
</http:request>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
</flow>
使用上述配置,我可以从我尝试呼叫的API中获取401响应。使用完全相同的详细信息通过Postman拨打电话可以正常工作。
我已将目标主机的证书导入到我的密钥库中。我使用的是Mule版本3.7.3。
对于可能遗漏的东西/我做错了什么的任何想法?
答案 0 :(得分:3)
将preemptive="true"
添加到http:basic-authentication
元素:
<http:basic-authentication username="username"
password="password"
preemptive="true" />