【问题标题】:When creating a Heroku Add-On for a multi-tenant service, how do you provision multiple Heroku applications to a single tenant?在为多租户服务创建 Heroku 附加组件时,如何为单个租户提供多个 Heroku 应用程序?
【发布时间】:2012-07-14 20:50:47
【问题描述】:

Stormpath 是一种多租户云身份管理服务,我们希望将其作为 Heroku 插件提供给 Heroku 用户。

与 Heroku 一样,Stormpath 能够为每个客户代表一个或多个应用程序(其中“客户”是“租户”的同义词)。

例如,就像 Heroku 客户可以将一个或多个应用程序部署到 Heroku(测试、登台、生产等)一样,Stormpath 客户(租户)可以注册一个或多个他们希望 Stormpath 保护的应用程序。

从这个意义上说,Stormpath 的模型和 Heroku 的模型对于这种一对多(客户到应用程序)的关系似乎是相同的。

这是我的问题:

当 Heroku 客户将 Stormpath 插件添加到多个应用程序时,我们如何确保这些应用程序与同一个 Stormpath 租户相关联?

add-on provisioning 期间,插件实现是否有办法获得 Heroku 客户的唯一租户标识符,该标识符在所有 Heroku 应用程序中通用?例如,唯一的 Heroku 租户 ID 或 Heroku 租户所有者电子邮件地址?

实现逻辑如下:

  • 正在配置的 Heroku 应用程序的所有者是否有 Stormpath 租户?
    • 否:创建 Stormpath 租户,然后将应用与新租户关联。
    • 是:将应用与所有者的现有 Stormpath 租户相关联。

【问题讨论】:

    标签: heroku multi-tenant add-on


    【解决方案1】:

    当 Heroku 向您发送配置请求时,您将获得一个 JSON blob like this

    {
      "heroku_id": "app123@heroku.com",
      "plan": "basic",
      "region": "amazon-web-services::us-east-1",
      "callback_url": "https://api.heroku.com/vendor/apps/app123%40heroku.com",
      "options": {}
    }
    

    您可以使用 heroku_id 通过 Heroku 的 AppInfo API 查找用户标识符。

    【讨论】:

    • heroku_id 不是 Heroku 用户标识符。它是 Heroku 中配置的单个应用程序的标识符。 Heroku 客户(“租户”)可以拥有许多应用程序。
    • @Les 你说的很对。已修改以显示您如何 获取 user 标识符。
    • 非常感谢您的跟进 - 不幸的是,Heroku 文档表明应用所有者的电子邮件地址可能会更改,此时它不再是不可变的标识符。所以我不能使用它来将每个应用程序与已知租户相关联(如果用户更改了他们的电子邮件地址,那么该电子邮件下的所有新应用程序都必须创建到一个新的租户中——根本不需要)。我希望 Heroku 只提供一个适当的独特的不可变 API。很奇怪他们没有……
    猜你喜欢
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    相关资源
    最近更新 更多