连接池和单点登录

Posted

技术标签:

【中文标题】连接池和单点登录【英文标题】:Connection pooling and single sign on 【发布时间】:2009-05-14 07:07:38 【问题描述】:

带有 SQL Server 2005 的 ASP.NET 3.5 应用程序必须在 Intranet 环境中提供单点登录。这是通过使用 web.config 中的 Windows 身份验证模式来完成的。

我想尽可能多地使用连接池。我还想在连接字符串中使用 SSPI 作为数据库访问,而不是使用模拟(在 web.config 中)

因此:有没有办法为 ASP.NET 应用程序使用机制?

【问题讨论】:

【参考方案1】:

使用 Windows 身份验证并不一定意味着处理请求的线程以该用户身份运行。默认情况下,ASP.NET 在其线程中使用工作进程标识,因此除非您有特定原因启用模拟,因为您的安全模型需要它(例如,您已将用户组作为 SQL 用户添加到 SQL 并控制对 SP/视图的访问通过这些用户)那么这里没有问题。

假设您在 ASP.NET 处理中冒充 windows 用户:-

你是在内网环境中,你有多少用户?

连接池已经存在很长时间了,以帮助提高应用程序的可扩展性,但是尽管机器在过去十年中得到了显着改进,但组织中的用户数量并没有以同样的速度增长。

IOW,您确定每个用户打开一两个连接实际上是个问题吗?

连接池仍然有效,每个连接规范都有自己的池,导致大量的一两个连接池。因此,连接设置时间不会成为问题。一个 500 个用户的系统可能会导致 1000 个连接处于活动状态,但按照现代标准,这并不会像最初设想池化时那样造成太大的负担。

【讨论】:

使用 SSPI 并开启 Windows 身份验证模式是解决方案,因为使用了工作进程的身份,因此保证每次调用数据库时都不会出现问题。【参考方案2】:

您可以为您的应用程序使用单点登录,然后让应用程序为每个数据库连接模拟一个用户,最好是没有登录权限的服务帐户。

【讨论】:

以上是关于连接池和单点登录的主要内容,如果未能解决你的问题,请参考以下文章

PHP怎么实现单点登录

单点登录全方位学习

JavaWeb基于AD域的单点登录怎么做?

单点登录认证方案思路,求好思路回复

Java Ldap单点登录,如何获取Ldap server的证书

CAS单点登录-关于服务器超时以及客户端超时的分析 (十)