sql-server – 使用Windows Auth将单向到SQL Server

快…

如何使用Windows身份验证sql Server与Mono SQL Client运行在Windows上没有用户名密码在连接字符串?

更多…

>我们必须使用Mono来支持我们应用程序的某些组件的多个平台
这是一个外部限制,我们不能改变
>我们将运行仅在Windows上访问数据库的组件
Mono sql Client的可移植性/操作系统无关功能添加任何值

也就是说,在非Windows上运行的任何组件将不会访问sql Server数据库

>该过程运行在某些Windows用户(真实用户,服务帐户,无论如何)
嵌入用户名和密码是件坏事
不管你来自哪个角度

那么,如何启用Mono sql Client来读取运行该进程的用户的NT登录令牌并将其传递给sql Server?就像MS .net一样吗?

>有没有一个标志或设置没有很好的文件
>我们需要实现自己的扩展吗?
如果是这样,我们真的是第一个要这样做的人吗?

还有其他5个问题(当前)标记为Mono和sql Server:他们不回答这个…

解决方法

这听起来并不容易完成.据我所知,Mono SqlClient支持NT身份验证:

Has a connection string format for NT Authentication:
Server=hostname;Database=databaseName;User
ID=windowsDomain\windowsUserid;Password=windowsPassword;Integrated
Security=sspI

但是,您当然希望集成安全性= sspI的简单形式,并让NT身份验证握手使用当前的进程凭据.这里就是这个问题.虽然检索当前进程用户名(身份)是微不足道的,但进程不可能发现自己的凭据密码.当进行NT身份验证时,Windows进程实际上并不执行身份验证,而是要求Locas Security Authority(也称为LSASS.EXE,琐事:不要附加调试器))来验证此过程.这意味着任何想要实现相同的库都必须使用相同的协议,即.请求LSA认证.实际的细节,好奇的是,Using SSPI,InitializeSecurityContext,AcceptSecurityContext的顺序如Using SSPI所述.我没有学习sqlClient的单声道源,但我很确定他们使用一些GSS-API库进行身份验证,而不是sspI .因此,根据定义,他们需要知道密码,因为他们将自己进行Kerberos交换,不要求LSA代表它们执行.

这就是你可以告诉我的一些猜测,更多的猜测在我身边,但我会惊讶地听到一个不同的故事.虽然它可以分叉或修补Mono.Data.Tds和修改认证实现以使用sspI而不是GSS,这将是一个非便携式Windows特定实现.因为Mono的第一个吸引点是Windows不具体,我猜测没有什么动力.恐怕你要自己去实现它了.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...