如何使用 WSO2 API 管理器在调解器中将租户设置为 header
How to set tenant to header in mediator with WSO2 API Manager
我有一个 API 需要租户作为 header。
如果我创建自定义 in-sequence:
<sequence name="WSO2AM--Ext--In">
<header
name="X-Tenant-Id"
scope="transport"
action="set"
expression="???????????????????"
/>
</sequence>
有没有可以用来实现这一目标的表达式?或者我应该求助于创建一个 per-API 调解器来设置它吗?
PS:
查看 WSO2 源代码 (CarbonTenantInfoConfigurator.java),我发现这个片段可以用作提示:
PrivilegedCarbonContext cc = PrivilegedCarbonContext.getThreadLocalCarbonContext();
String tenantDomain = cc.getTenantDomain();
int tenantId = cc.getTenantId();
messageContext.setProperty("tenant.info.domain", tenantDomain);
messageContext.setProperty("tenant.info.id", tenantId);
但我不知道如何访问自定义序列中的那些属性(如果可能的话)。
如代码所示,这些设置为突触 MessageContext。您可以使用以下表达式检索这些属性。
get-属性('tenant.info.domain')
get-属性('tenant.info.id')
谢谢
铁山
检查 ApiManager 的调试输出后,我注意到自定义序列在处理程序之后立即执行。幸运的是,OAuthAuthenticator class(由 APIAuthenticationHandler 使用)设置了一些方便的属性,例如 END_USER_NAME
和 APPLICATION_NAME
.
END_USER_NAME
包含调用者的姓名和租户(user@tenant.com)。
这个自定义序列对我有用:
<sequence name="add_service_header" trace="enable" statistics="enable" xmlns="http://ws.apache.org/ns/synapse">
<log/>
<property name="tenant" expression="fn:substring-after(get-property('END_USER_NAME'), '@')" />
<header name="X-Tenant" scope="transport" expression="get-property('tenant')"/>
<header name="X-AppName" scope="transport" expression="get-property('APPLICATION_NAME')"/>
</sequence>
除了源代码和 this other question
,我找不到 属性 的文档
我有一个 API 需要租户作为 header。
如果我创建自定义 in-sequence:
<sequence name="WSO2AM--Ext--In">
<header
name="X-Tenant-Id"
scope="transport"
action="set"
expression="???????????????????"
/>
</sequence>
有没有可以用来实现这一目标的表达式?或者我应该求助于创建一个 per-API 调解器来设置它吗?
PS: 查看 WSO2 源代码 (CarbonTenantInfoConfigurator.java),我发现这个片段可以用作提示:
PrivilegedCarbonContext cc = PrivilegedCarbonContext.getThreadLocalCarbonContext();
String tenantDomain = cc.getTenantDomain();
int tenantId = cc.getTenantId();
messageContext.setProperty("tenant.info.domain", tenantDomain);
messageContext.setProperty("tenant.info.id", tenantId);
但我不知道如何访问自定义序列中的那些属性(如果可能的话)。
如代码所示,这些设置为突触 MessageContext。您可以使用以下表达式检索这些属性。
get-属性('tenant.info.domain')
get-属性('tenant.info.id')
谢谢
铁山
检查 ApiManager 的调试输出后,我注意到自定义序列在处理程序之后立即执行。幸运的是,OAuthAuthenticator class(由 APIAuthenticationHandler 使用)设置了一些方便的属性,例如 END_USER_NAME
和 APPLICATION_NAME
.
END_USER_NAME
包含调用者的姓名和租户(user@tenant.com)。
这个自定义序列对我有用:
<sequence name="add_service_header" trace="enable" statistics="enable" xmlns="http://ws.apache.org/ns/synapse">
<log/>
<property name="tenant" expression="fn:substring-after(get-property('END_USER_NAME'), '@')" />
<header name="X-Tenant" scope="transport" expression="get-property('tenant')"/>
<header name="X-AppName" scope="transport" expression="get-property('APPLICATION_NAME')"/>
</sequence>
除了源代码和 this other question
,我找不到 属性 的文档