wso2 - 如何使用 WSO2 API 管理器将租户设置为中介中的 header

标签 wso2 wso2carbon wso2-am

我有一个需要租户作为 header 的 API。

如果我创建一个自定义的顺序:

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

有没有我可以使用的表达方式来实现这一目标?还是我应该求助于创建每个 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);

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

最佳答案

检查 ApiManager 的调试输出后,我注意到自定义序列在处理程序之后立即执行。幸运的是,OAuthAuthenticator 类(由 APIAuthenticationHandler 使用)设置了一些方便的属性,例如 END_USER_NAMEAPPLICATION_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 之外,我找不到该属性的文档。

关于wso2 - 如何使用 WSO2 API 管理器将租户设置为中介中的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32076003/

相关文章:

mongodb - Wso2 Stream Mongo Datetime 连接查询

templates - WSO2 ESB 序列模板错误

installation - 如何使用Shell脚本在WSO2中安装功能

wso2 - 如何浏览嵌入式 H2 数据库中的新增数据

西类牙语本地化在 wso2 api 管理器中不起作用

c# - OWIN OpenID 连接授权无法授权安全 Controller /操作

wso2 - WSO2 v4.2.0 中的登录页面问题

wso2 - 使用 WSO2 API 管理器的 AP 聚合

amazon-web-services - WSO2 Kuberentes AWS 部署