2017-03-10 61 views
0

我想将应用程序部署到windows服务器(IIS 7.5),它将客户端NTLM Windows身份验证传递给SQL Alchemy中的SQL Server连接。用于Flask/IIS/SqlAlchemy的NTLM

目前的连接字符串如下所示: "DRIVER={SQL Server Native Client 11.0};Server=%s;Database=%s;TDS_Version=8.0;Trusted_Connection=yes;"

而且Trusted_Connection=yes用于通过web服务器进程到SQL Server的所有者。这在运行开发服务器时效果很好,因为我正在调用服务器,以便我的访问凭据可以通过。 但是当IIS运行服务器时,它将继承应用程序池标识并发送一个伪造的非域用户作为auth凭证。

我试图在webconfig中使用WindowsAuth设置,但SQLAlchemy不断将应用程序池标识传递给sql服务器。

回答

0

我遇到过与SQL DB连接类似的问题,并且可行的解决方法是创建Windows网络用户并使IIS以该身份而不是应用程序池身份运行应用程序。然后将这个“真实用户”身份传递给任何下游调用(SQL)。

这可以在企业环境中很好地扩展并防止大多数安全更改问题,因为用户是“普通用户”,而且只是名义上的“服务帐户”。