gpt4 book ai didi

wso2 - 将用户名和密码传递给 WSO2 ESB 中的 REST API

转载 作者:行者123 更新时间:2023-12-03 12:13:35 25 4
gpt4 key购买 nike

我正在使用 wso2 ESB 中的 REST API 来调用具有基本身份验证的另一个服务。

这是我的 API 代码:

<resource methods="POST" uri-template="/deleteZoneFromEnrolment/">
<inSequence>
<property xmlns:ns="http://org.apache.synapse/xsd" name="Authorization" expression="fn:concat('Basic ', base64Encode('user:password'))" scope="transport"></property>
<property name="DISABLE_CHUNKING" value="true" scope="axis2"></property>
<payloadFactory media-type="xml">
<format>
<enr:DeleteZoneFromEnrolment xmlns:enr="http://someURL/Enrolment.xsd">
<Enrolment>$1</Enrolment>
<Zone>$2</Zone>
</enr:DeleteZoneFromEnrolment>
</format>
<args>
<arg evaluator="json" expression="$.enrolment"></arg>
<arg evaluator="json" expression="$.zone"></arg>
</args>
</payloadFactory>
<send>
<endpoint key="dev_enrolmentEndpoint"></endpoint>
</send>
<log level="full"></log>
</inSequence>
<outSequence>
<property name="messageType" value="application/json" scope="axis2" type="STRING"></property>
<send></send>
</outSequence>
<faultSequence>
<sequence key="esb_error_handling_response"></sequence>
</faultSequence>

我使用 json POST 调用此 REST API,如下所示:

{
'enrolment':'whatever',
'zone':'1'
}

如果我对用户和密码进行硬编码,效果会很好。但我要向前迈出一步。我需要使用我用来调用 ESB 中的 REST API 或设置此 API 以通过 GET/POST 调用传递身份验证的 POST JSON 来传递此基本授权。

有人知道怎么做吗?这是我正在尝试但没有成功的方法:

在调用我的 API (POST http://esbUrl:8280/api/deleteZoneFromEnrolment) 之前,在我的应用程序中,我在 Base64 中编码了字符串“user:password”,结果是这样的:“cHJhYmF0aDpwcmFiYXRo”。我这样更改我的 API 代码:

<resource methods="POST" uri-template="/deleteZoneFromEnrolment/">
<inSequence>
<property xmlns:ns="http://org.apache.synapse/xsd" name="Authorization" expression="fn:concat('Basic ', json-eval($.user))" scope="transport"></property>
<property name="DISABLE_CHUNKING" value="true" scope="axis2"></property>
<payloadFactory media-type="xml">
<format>
<enr:DeleteZoneFromEnrolment xmlns:enr="http://someURL/Enrolment.xsd">
<Enrolment>$1</Enrolment>
<Zone>$2</Zone>
</enr:DeleteZoneFromEnrolment>
</format>
<args>
<arg evaluator="json" expression="$.enrolment"></arg>
<arg evaluator="json" expression="$.zone"></arg>
<arg evaluator="json" expression="$.user"></arg>
</args>
</payloadFactory>
<send>
<endpoint key="dev_enrolmentEndpoint"></endpoint>
</send>
<log level="full"></log>
</inSequence>
<outSequence>
<property name="messageType" value="application/json" scope="axis2" type="STRING"></property>
<send></send>
</outSequence>
<faultSequence>
<sequence key="esb_error_handling_response"></sequence>
</faultSequence>

和 POST json:

{
'enrolment':'whatever',
'zone':'1',
'user':'cHJhYmF0aDpwcmFiYXRo'
}

最佳答案

我终于解决了。这比我想象的要容易,只需在我的应用程序中添加 Basic Auth header (当我调用我的 ESB API 时)以及用户名和密码,并且凭据通过我的 API 传递到外部服务。

关于wso2 - 将用户名和密码传递给 WSO2 ESB 中的 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35269448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com