【发布时间】:2020-06-19 08:30:45
【问题描述】:
我计划在 ASP.Net Core 中创建一个公共 Web Api。还连接了一个数据库,并计划登录。
有一个从我的应用程序到使用Integrated Security=True; 打开的数据库的连接。是否可以使用不同的用户(来自活动目录)连接到数据库。不是运行应用程序的用户,而是 Active Diretory 中的任何其他用户。
我的理解是:
- 应用程序以特定用户身份运行。
Integrated Security=True;将以该用户身份打开连接 -> 不可能。 - 假冒其他用户要求应用具有提升的权限并知道该用户的密码 -> 不是一个选项。
- 在没有密码的情况下执行此操作意味着必须将应用程序权限提升到可能的最高级别 -> 不是一个选项。
那么有什么方法可以从我们的 AD 中以某个用户身份连接到数据库?我觉得这是不可能的。
谢谢!
【问题讨论】:
-
您这样做是为了解决什么问题?
-
我不确定我是否理解正确。 Web API 的安全性如何?您可以获得他们的令牌并冒充他们。我们已经实现了 jwt 身份验证,我使用 jwt 令牌来模拟!。
-
这个想法是,通过以该活动目录用户身份登录数据库,可以在数据库中隐式使用来自当前活动目录用户的安全性。另一方面(这几天很常见,我们不想要什么):如果使用(例如)应用程序正在运行的服务帐户打开连接,那么我们必须通过(例如)a告诉数据库字符串我们要为哪个用户获取数据以及他的权限是什么。
-
谢谢@Bendram,但使用令牌并不能解决问题。我认为我们需要通过在
advapi32.dll中向LogonUserA提供用户的用户名和密码来进行模拟,然后使用模拟上下文来真正模拟活动目录用户。 -
在 ASP.Net Core 中基本上有合适的模拟方式吗?
标签: c# asp.net-core active-directory impersonation