我有一个简单的Web服务(C#,ASP.NET Core3),它在数据库中公开了一些存储的proc。
该网站正在Windows身份验证(这是一个Intranet应用)上运行,因此我知道每个调用该服务方法的用户的身份,并且知道该用户已通过身份验证。
现在,我想使用发出Web请求的用户的身份来建立从Web服务到SQL的连接。我不想以对数据库具有超级访问权限的一些普通用户身份连接到数据库。
几乎很明显,我也想使用SQL中的登录用户来填充我的“审核”表中的“用户ID”字段。
这有可能吗?如果有人知道我什至应该用谷歌搜索什么术语-我真的很感谢任何提示。到目前为止,我所有的搜索似乎都返回了与主题无关的结果。我想,我错过了此类事情的关键术语-否则可能根本不可能...
是否还有其他方法可以将用户标识传递给SQL,而无需更改数据库中的每个proc以接受用户名?这似乎有点荒谬。
答案 0 :(得分:0)
您必须在连接字符串中使用Trusted Connection
(请参见What is a Trusted Connection?)
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
还必须确保每个用户都有权执行存储过程(请参见Grant execute permission for a user on all stored procedures in database?)
然后,您可以在查询中使用SUSER_NAME()
,SUSER_ID()
,SUSER_SNAME()
,SUSER_SID()
。