如何使用WSO2 API管理器在mediator中将租户设置为标头

如何使用WSO2 API管理器在mediator中将租户设置为标头,wso2,wso2carbon,wso2-am,Wso2,Wso2carbon,Wso2 Am,我有一个API,它需要租户作为头 如果我按顺序创建自定义项: <sequence name="WSO2AM--Ext--In"> <header name="X-Tenant-Id" scope="transport" action="set" expression="???????????????????" /> </sequence> 但如果可能的话,我不知道如何访问自定义序列中的那

我有一个API,它需要租户作为头

如果我按顺序创建自定义项:

<sequence name="WSO2AM--Ext--In">
    <header
       name="X-Tenant-Id"
       scope="transport"
       action="set"
       expression="???????????????????"
    />
</sequence>

但如果可能的话,我不知道如何访问自定义序列中的那些属性。

正如代码所示,这些属性设置为synapse MessageContext。可以使用以下表达式检索这些属性

获取属性('tenant.info.domain')

获取属性('tenant.info.id')

谢谢


Tishan

在检查了ApiManager的调试输出后,我注意到定制序列正在处理程序之后执行。幸运的是,OAuthAuthenticator类(由APAuthenticationHandler使用)设置了一些方便的属性,如
END\u USER\u NAME
APPLICATION\u NAME

END\u USER\u NAME
包含调用方的名称和租户(user@tenant.com)

这个自定义序列对我很有用:



除了源代码之外,我找不到该属性的文档,

我试过了。还尝试了
获取属性(tenant.info.domain)
$ctx:tenant.info.domain
$axis2:tenant.info.domain
,但没有成功。我尝试了ESB 4.8.0,它工作正常。下面是用于设置HTTP头的synapse配置段。这正是我想要的,而且效果很好。谢谢
PrivilegedCarbonContext cc = PrivilegedCarbonContext.getThreadLocalCarbonContext();
String tenantDomain = cc.getTenantDomain();
int tenantId = cc.getTenantId();
messageContext.setProperty("tenant.info.domain", tenantDomain);
messageContext.setProperty("tenant.info.id", tenantId);