Azure 上的 ASP.NET 多租户应用程序 - 处理身份验证和与单独租户数据库的连接

发布于 2025-01-02 19:04:52 字数 495 浏览 2 评论 0原文

我在 Azure 上有一个多租户应用程序(ASP.NET Web 表单),单个 SQL Azure DB 存储成员身份,每个租户都有一个单独的 SQL Azure DB 来存储其数据。最初有 10 个租户,每个租户大约有 2,000 个用户,但这可能会增加到 50 个租户。

当涉及到身份验证并将每个用户连接到适当的租户数据库时,我是否走在正确的轨道上......

1)。用户使用成员资格数据库进行身份验证

2)。检索用户 TenantID(作为用户配置文件的一部分存储)

3)。根据 TenantID 从 cscfg 文件中选择数据库连接字符串

4)。在会话中存储连接字符串(AppFabric 缓存)

上述方法需要在 Azure 服务配置文件中为每个租户存储一个单独的连接字符串,最多可达 50 个?他们有更好的方法吗?例如,向成员资格数据库添加一个附加表来存储连接字符串?什么是最佳实践?

您的意见和意见将受到极大的欢迎。

提前致谢。 本

I have a Multi-tenant App (ASP.NET Web Forms) on Azure, a single SQL Azure DB stores membership and each tenant has a separate SQL Azure DB for their data. Initially with 10 tenants, each tenant with around 2,000 users, but this could increase up to 50 tenants.

Am I on the right track when it comes to authentication and connecting each user to the appropriate tenant DB...

1). User authenticates with Membership DB

2). Retrieve the users TenantID (which is stored as part of User Profile)

3). Select DB Connection string from cscfg file based on TenantID

4). Store Connection string in Session (AppFabric cache)

The above approach requires storing a separate connection string per tenant within the Azure Service configuration file, which could be up to 50? Is their a better way of doing this? For instance adding an additional table to the membership DB to store connection strings? What is best practice?

Your views and opinions would be greatly received.

Thanks in advance.
Ben

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

少女七分熟 2025-01-09 19:04:52

我的团队构建了一个多租户示例应用程序,您可以看一下,以获取有关身份管理、数据库管理等的想法。它将租户映射到租户数据库,并且还支持多个数据库服务器来处理每个 150 个数据库- 服务器限制。

您可以在此处获取 Cloud Ninja 项目。

My team built a multi-tenant sample app that you can take a look at, to get ideas about identity management, database management, etc. It maps tenant to tenant database, and also supports multiple database servers to deal with 150-database-per-server limit.

You can grab the Cloud Ninja project here.

心头的小情儿 2025-01-09 19:04:52

您可以考虑的另一个选择是使用 SQL Azure 进行分片:

http://blogs.msdn.com/b/sqlazure/archive/2010/12/23/10108670.aspx

然后你不需要所有数据库,也不需要担心存储所有这些连接字符串。

Another option that you could look into would be Sharding with SQL Azure:

http://blogs.msdn.com/b/sqlazure/archive/2010/12/23/10108670.aspx

Then you wouldn't need all the databases and to worry about storing all those connection strings.

浪推晚风 2025-01-09 19:04:52

我认为您的解决方案没有任何重大问题。参考您对连接字符串的担忧,也许您可​​以使用某种算法从租户名称/id 计算租户数据库基础。

为了安全起见,当您在会话中存储租户连接字符串时,您可能需要加密或散列,以确保最终用户无法知道连接字符串并侵入您的系统。

I don't think there's any major problem in your solution.Ref your concern about the connection string, maybe you can use some algorithm to calculate the tenant database base from the tenant name/id.

One thing for security, when you store tenant connecting string in session, you might need to encrypt or hash, to ensure the end user will not be able to know the connection string and hack into your system.

带刺的爱情 2025-01-09 19:04:52

我认为将会员数据存储到中央数据库中可能存在问题。数据会随着租户数量的增长而增长。数据库备份还需要额外的步骤来包含会员数据。我宁愿将会员数据保存到单个租户数据库中。在连接字符串方面,您可以使用表存储或单个中央数据库来保存租户信息和相关连接字符串。不建议存储到 cscfg 文件中,因为这是根据租户数量动态变化的。只是我的2分钱。

I think there might be issues storing membership data into a central database. the data will grow along with the growth number of tenants. The database backup need extra step to include membership data as well. I will rather keep membership data into individual tenant DB. In terms of connection string, you can use table storage or a single central db to keep tenant information and related connection string. It is not recommended to store into cscfg file as this is dynamic based on number of tenants. Just my 2 cents.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文