C#模拟AD用户

本文关键字:用户 AD 模拟 | 更新日期: 2023-09-27 18:26:40

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

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

是否有机会在没有密码的情况下模拟active directory用户以该特定用户身份启动操作?

C#模拟AD用户

使用模拟几乎肯定无法实现这一点,原因是模拟需要每个函数的端到端支持才能实现结果。在这种情况下,这意味着到数据库的整个连接堆栈都需要支持模拟,而事实并非如此。陈有一篇关于假冒的文章,很好地解释了问题。

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