如何使用 WSO2 API Manager 将租户设置为调解器中的标头

2024-03-07

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

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

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

有没有一种表达方式可以用来实现这一目标?或者我应该创建一个 per-API 中介来设置它?

附: 查看 WSO2 源代码(CarbonTenantInfoConfigurator.java https://svn.wso2.org/repos/wso2/carbon/platform/trunk/components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/handler/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_NAME and APPLICATION_NAME.

END_USER_NAME包含调用者的姓名和租户([电子邮件受保护] /cdn-cgi/l/email-protection).

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

<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>

除了源代码之外,我找不到该属性的文档,并且这另一个问题 https://stackoverflow.com/questions/23755852/add-header-with-username-into-request-to-backend-in-wso2-apimanager

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 WSO2 API Manager 将租户设置为调解器中的标头 的相关文章

  • WSO2 IS 自定义验证器

    我们正在使用 WSO2 IS v5 4 1 我们希望根据外部用户数据存储对用户进行身份验证 所需的步骤 用户使用用户名和密码通过 Oauth 登录 WSO2 IS 登录请求被转发到外部服务 该服务通过给定的用户名和密码对用户进行身份验证 而
  • 无法使用 ldap 凭据登录 wso2 身份服务器

    我试图将 wso2 身份服务器连接到 Ldap ReadWriteLDAPUserStoreManager 集成成功并且可以从 wso2 身份服务器访问 ldap 用户 但问题是我无法使用 ldap 用户名和密码登录身份服务器 请帮我 Pl
  • 通过 WSO2 API 管理器公开不安全的 url

    我有一个在 WSO2 的 API Manager Publisher 工具中设置的 API 当使用访问令牌正确调用时 所有调用都可以正常工作 但我有一个网址 我希望任何人都可以调用它 这是一个定制的 Swagger UI 页面 与 WSO2
  • 公共本机移动应用程序中的 WSO2 Api Manager OAuth2 DCR 安全性

    我正在为 iOS 和 Android 设计一个公共本机移动应用程序的安全性 该应用程序使用 WSO2 Api Manager APIM 使用公开可用的 API 因此 我了解与此设置相关的安全问题 并且我想将 OAuth2 应用于本机应用程序
  • startOnLoad 未按预期工作

    我创建了基于 VFS 的代理服务 如下所示 但属性startOnLoad false 没有按预期工作 即使在部署代理之后 我们也需要手动单击 激活 然后单击 禁用 以永久禁用 VFX 代理 但代理状态显示为已禁用 但代理仍在后端轮询 FTP
  • pmml:predict WSO2 流处理器不存在扩展

    我正在按照 WSO2 Stream Processor Studio 教程来练习 Siddhi 到目前为止 我已经成功解决了教程中包含的所有错误 然而 我被困在第 12 个教程 进行实时预测 中 Siddhi 应用程序是 App name
  • 尝试根据 mysql 保存用户应用程序时,WSO2 App Store 抛出错误

    当我尝试创建或编辑应用程序时 API Store 抛出错误 java sql SQLException Can t call commit when autocommit true 我添加了设置 init command set autoc
  • WSO2 API Manager 网关集群。如何在 api-manager.xml 中设置网关端点

    我计划在我的公司使用 WSO2 API 管理器 因此尝试使其能够集群工作 它由 Keymanager Gateway manager worker Publisher 2 个 AWS 实例上的 Store 组成 Host1包含Keymana
  • WSO2 ESB 4.9.0:错误 101500 意味着什么

    在连接到服务器时 我们会收到如下错误
  • 在 WSO2 ESB 中介期间修改配置注册表资源内容

    我有一个场景 我需要在配置注册表中存储简单计数器并在序列流结束时递增它 我们需要存储在配置注册表中的原因是 如果服务器重新启动 我们将保留最后的计数器值 有人可以建议如何增加配置注册表中的计数器吗 您可以在中介中使用示例 javascrip
  • WSO2 ESB - 用 Base64 写入文件

    我有一个代理 它接受包含 Base64 编码文件的 XML 文件 例如 XML 如下所示
  • 使用脚本中介获取 JavaScript 中的属性值

    当属性的范围不同于 default 时 有没有办法在 WSO2 ESB 的脚本中介器的 javascript 代码中获取该属性的值 如果属性具有默认范围 get property MyProperty OR 如果属性具有 运输 范围 get
  • 关于 WSO2 API Manager 数据源

    我现在正在执行 WSO2 API 管理器 Analytics 2 0 POC 当我将数据源从 H2 更改为 Oracle 时 在 wso2am 2 0 1 SNAPSHOT 中 有 2 个数据源配置文件 master datasources
  • WSO2 API Manager - 移动应用程序如何连接到 API Manager?

    我们有一个移动应用程序 需要通过 WSO2 API Manager 来访问一些 API 由于oauth2身份验证 我们需要在移动应用程序中存储用户名和密码 安全吗 例如 可以使用用户名和密码登录API Store 对于这种情况有其他解决方案
  • WSO2 Api Manager 在日志中介器中记录 Http 请求

    有没有办法将 http 请求远程主机包含在用于特定 api 的日志中介器中 按照说明操作后 我可以记录肥皂消息 但我没有有关服务调用者的信息 我目前使用以下序列定义
  • WSO2 EI - 处理 SFTP 错误并调用故障/错误序列

    我正在尝试通过 jms http 代理写入 SFTP 位置 但是 当 SFTP 端点出现错误 密码错误 网络连接问题 远程目录不存在 时 我想触发故障序列并处理此错误 尝试一些 DLC 类型的场景 我发现故障序列不会调用 FTP 错误 除非
  • WSO2 API Manager 作为 2 个实例一体化设置

    我最近将 WSO2 API Manager 2 0 0 部署为 2 个实例一体化集群 使用 Hazelcast AWS 方案 并使用 mysql 数据源 如此处指定link https docs wso2 com display AM200
  • 使用配置文件添加 WSO2 IS Oauth / OpenId Connect 服务提供商

    我们目前在我们的环境中使用自动化流程 我们有 WSO2 5 3 0 我需要使用 XML 配置文件配置 Oauth2 Openid 服务提供程序 所有文档 示例等均面向 SAML2 而不是 Oauth2 OpenId 有人可以帮助我吗 目前您
  • 将自定义处理程序添加到特定 API wso2 API-Manager

    我需要将自定义处理程序和 APIAuthenticationHandler 添加到特定 API 并且需要将其添加到以下 处理程序类 org wso2 carbon apimgt gateway handlers security APIAu
  • 在 wso2 APIM 中以编程方式添加作用域

    我可以在 WSO2 APIM 中以编程方式创建范围吗 我有一个要求 用户可以通过 UI 创建新角色并将一些权限与新角色关联 用户不会使用 WSO2 Web 界面 相反 他将使用内部网络应用程序 为此 我必须以编程方式创建作用域并将 API

随机推荐