连接池和单点登录
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】:您可以为您的应用程序使用单点登录,然后让应用程序为每个数据库连接模拟一个用户,最好是没有登录权限的服务帐户。
【讨论】:
以上是关于连接池和单点登录的主要内容,如果未能解决你的问题,请参考以下文章