我正在使用API Manager 2.0,我设计了一个新的API,生产网址是Web服务的终点。在API中,我添加了" 邮件调解政策"在请求中将json转换为soap并在请求中将soap转换回json。没有身份验证时,这可以正常工作。
当我尝试连接到使用basic进行身份验证的端点时,无法发送auth标头。是否有可能通过,如果可以,如何实现呢?
我已经尝试过Endpoint Security Schema,但没有成功。
答案 0 :(得分:1)
如果您正确配置Endpoint Security Scheme
,您应该在api文件的Authorization
目录中看到如下所示的repository/deployment/server/synapse-configs/default/api/
属性。仔细检查它是否在那里。
<resource methods="GET" url-mapping="/menu" faultSequence="fault">
<inSequence>
<property name="api.ut.backendRequestTime"
expression="get-property('SYSTEM_TIME')"/>
<filter source="$ctx:AM_KEY_TYPE" regex="PRODUCTION">
<then>
<property name="Authorization"
expression="fn:concat('Basic ', 'YmhhdGhpeWE6cGFzc3dvcmQ=')"
scope="transport"/>
<send>
<endpoint name="admin--PizzaShackAPI_APIproductionEndpoint_1">
<http uri-template="https://localhost:9443/am/sample/pizzashack/v1/api/"/>
<property name="ENDPOINT_ADDRESS"
value="https://localhost:9443/am/sample/pizzashack/v1/api/"/>
</endpoint>
</send>
</then>
<else>
<property name="Authorization"
expression="fn:concat('Basic ', 'YmhhdGhpeWE6cGFzc3dvcmQ=')"
scope="transport"/>
<send>
<endpoint name="admin--PizzaShackAPI_APIsandboxEndpoint_1">
<http uri-template="https://localhost:9443/am/sample/pizzashack/v1/api/"/>
<property name="ENDPOINT_ADDRESS"
value="https://localhost:9443/am/sample/pizzashack/v1/api/"/>
</endpoint>
</send>
</else>
</filter>
</inSequence>
<outSequence>
<class name="org.wso2.carbon.apimgt.usage.publisher.APIMgtResponseHandler"/>
<send/>
</outSequence>
</resource>
答案 1 :(得分:0)
您可以通过实现可以为特定API配置的介体来实现此目的。在进行ESB调用之前,将调用该类,您可以检查请求并使用基本身份验证详细信息设置标头。 脚步。 1.创建一个中介项目 2.在mediator类中实现日志(handleRequest方法) 3.将此类导出为jar文件 4.将其复制到Carbon_home / repository / components / lib中 5.为特定API文件配置介体(C:\ WSO2 \ wso2am- 2.0.0 \库\部署\服务器\突触CONFIGS \ DEFAULT \ API) 6.在处理程序部分示例中添加配置