C#模拟AD用户

时间:2014-10-16 11:07:11

标签: c# impersonation

这是一个我需要帮助的场景:

客户端将文件传递给Web服务,该服务将它们存储在唯一生成的文件夹中(仅用于该操作)。 Web服务将有关该文件的信息(位置,运行状况等)保存在数据库中。 Windows服务(作为系统运行)经常检查该数据库是否有更改来处理文件。 这些文件将存储在一个单独的数据库(如库)中供以后使用。 此操作需要通过将文件上载到Web服务的用户来完成。 我通过传递令牌尝试没有密码的模拟,但我从来没有让它工作。

是否有机会在没有密码的情况下模拟活动目录用户以启动此特定用户的操作?

1 个答案:

答案 0 :(得分:3)

这几乎肯定不能使用模拟,原因是模仿需要跨越每个函数的端到端支持才能实现结果。在这种情况下,这意味着数据库的整个连接堆栈需要支持模拟,而这几乎肯定不是这种情况。 Raymond Chen has a nice article on impersonation解释了这个问题。

SQL Server(如果这是您的服务器)通过EXECUTE AS支持一种模拟形式,但我不建议使用动态凭据进行此操作 - 这听起来像是一场安全噩梦。您最好获取用户身份并将其传递给处理安全检查而不实际模拟用户的存储过程。当然,这个过程只能由服务调用。