【问题标题】:WSO2 Sharing super tenant web service to other tenantsWSO2 与其他租户共享超级租户 Web 服务
【发布时间】:2014-01-06 00:28:35
【问题描述】:

我想将部署在超级租户中的 Web 服务共享给其他租户。据我所知,如果他们使用 http://localhost:8280/services/echo?wsdl url,每个人都可以访问超级管理员服务。但我不想仅仅访问超级租户应用程序,我还希望看到正确租户的请求计数。我是否必须为每个租户部署相同的应用程序并使用正确的 url (http://localhost .com:8280/services/t/tenantname/echo?wsdl) 调用服务来收集请求计数?

还有其他方法可以做到这一点吗?例如,也许我可以将标头变量放入正在显示的请求中,哪个租户正在调用应用程序等,并且通过这种方法,我不必将我的服务部署到其他租户。

【问题讨论】:

    标签: wso2 multi-tenant


    【解决方案1】:

    你可以使用类似的代码,

    int tenantId = MultitenantUtils.getTenantId(this.getConfigContext());
    

    获取当前租户的租户 ID,并在消息本身或标题中发送。然后可以通过统计租户ID来记录服务器端访问的租户。

    This会帮你获取租户ID。

    【讨论】:

    • 感谢 Maninda 的评论,但是我不想为计数请求编写代码。如果我使用租户 URL 调用 Web 服务,WSO2 已经可以计算请求。我只是想知道 wso2 如果我发送带有标头或任何其他方式的请求,则可以使用适当的租户计算请求。
    【解决方案2】:

    一种可能性是在每个租户处部署应用程序。然后你会得到一个单独的 URL。 否则,您可以让您的服务了解多租户。为此,您需要确保服务安全。登录服务时,我们可以使用用户名来确定租户。例如 foo 用户应该是超级租户用户,而 foo@bar.com 应该属于 bar.com 租户。在这种情况下,碳框架执行此身份验证并将租户详细信息设置为碳上下文。您可以在服务级别访问它。例如。 CarbonContext.getCurrentContext().getTenantID() 或 Maninda 提到的方法。

    【讨论】:

      【解决方案3】:

      org.wso2.carbon.tomcat.ext.internal.Utils 类有一个名为 getTenantDomain 的函数。

      我已更改此方法以从标头中查找租户域,因此它的工作原理很吸引人 :)

      我觉得WSO2也想定制这个方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-21
        • 2018-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-28
        • 2022-01-23
        相关资源
        最近更新 更多