来自具有集成安全选项的sharepoint工作流的数据库连接问题

时间:2008-10-10 16:54:13

标签: sharepoint

大家早上好,

我遇到了使用SharePoint工作流程项目的问题(C#, VS 2008)并连接到数据库。这是我的数据库连接 字符串:

Data Source=DBSERVER;Initial Catalog=DBNAME;Integrated Security=True; 

当我尝试运行以下代码时,出现以下错误...

SqlConnection dbEngine = new SqlConnection(Constants.DBCONNECTION_STRING);
dbEngine.Open(); 

“用户'DOMAIN \ MACHINE_NAME $'

登录失败

我需要做的是传递登录用户的凭据。 我已经开始冒充,但它似乎没有通过 通过。任何建议将非常感谢。

提前感谢您的任何建议,

Scott Vercuski

3 个答案:

答案 0 :(得分:1)

Web前端和SQL服务器是否在同一个框中?

如果没有,您将必须设置Kerberos以允许凭据传播。

答案 1 :(得分:1)

出于安全性和连接池原因,任何数据库访问都应作为Windows服务帐户运行。

关于工作流程安全上下文,请参阅:

SharePoint,工作流和安全性 http://cglessner.blogspot.com/2008/09/sharepoint-workflows-and-security.html

声明性工作流程和用户上下文http://blogs.msdn.com/sharepointdesigner/archive/2008/09/28/declarative-workflows-and-user-context.aspx

SharePoint中的安全性和应用程序开发:第一步 工作流程 http://www.microsoft.com/technet/community/columns/secmvp/sv0408.mspx#EACAC

答案 2 :(得分:0)

您不能这样做 - 工作流程不会在用户的上下文中运行。工作流程是异步执行的。仅(HTTP)WebPage-Requests在用户的上下文中运行(如果您启用模拟)。您无法将模拟传递到工作流程。要恢复工作流中的模拟(您不应该这样做),需要用户名和密码或协议转换(过程需要在系统下运行)。

此外,如果您尝试从模拟的用户上下文访问数据库,则您的应用程序会出现严重的设计问题。这会混淆连接池并严重影响性能。这通常是不行的。

是kerberos问题。该进程尝试访问数据库作为计算机帐户,该帐户会告诉您该进程正在作为网络服务或(win 2008及更高版本)系统运行。