SQL 集成安全性使用计算机名而不是用户名

发布于 2024-11-25 09:06:36 字数 413 浏览 1 评论 0原文

我正在尝试在同一网络上使用 SQL Express 实例,并使用我的域用户进行身份验证。它与 SSMS 中的 Windows 身份验证配合得很好。我验证了我可以使用MyDB数据库,包括编辑表。

但是,当我尝试以下连接字符串时:

Server=ipaddress\SQLExpress;数据库=MyDB; Integrated Security=SSPI;

我收到错误:

无法打开登录请求的数据库“MyDB”。登录失败。 用户“ROMANIA\MONSTER2$”登录失败

问题是 MONSTER2 是我的计算机的名称,而不是我的用户名。 (罗马尼亚是域名。)我做错了什么?

[编辑]我忘记了一些可能相关的事情:我正在尝试从我的计算机上运行的网络服务打开连接。

I am trying to an SQL Express instance on the same network, authenticating with my domain user. It works just fine with Windows Authentication in SSMS. I verified that I can use the MyDB database, including editing tables.

However, when I try the following connection string:

Server=ipaddress\SQLExpress; Database=MyDB; Integrated Security=SSPI;

I get back an error:

Cannot open database "MyDB" requested by the login. The login failed.
Login failed for user 'ROMANIA\MONSTER2$'

The problem is that MONSTER2 is the name of my computer, not my username. (ROMANIA is the domain.) What am I doing wrong?

[Edit] I forgot something that might be relevant: I am trying to open the connection from a webservice running on my computer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

不顾 2024-12-02 09:06:36

您的 Web 服务正在 NT AUTHORITY\Network Service 安全上下文下运行。这将导致进程在访问域中的网络资源时使用主机的计算机帐户

您必须将 Web 服务配置为使用您的域身份运行。

如果您在 IIS 中托管 Web 服务,则可以通过 执行此操作冒充。这是一个例子:

<configuration>
    <system.web>
        <identity
            impersonate="true"
            userName="ROMANIA\username" 
            password="********" />
    </system.web>
</configuration>

Your web service is running under the NT AUTHORITY\Network Service security context. This will cause the process to use the host's machine account when accessing network resources in the domain.

You'll have to configure the web service to run with your domain identity.

If you're hosting your web service in IIS, you can do this through impersonation. Here's an example:

<configuration>
    <system.web>
        <identity
            impersonate="true"
            userName="ROMANIA\username" 
            password="********" />
    </system.web>
</configuration>
我是有多爱你 2024-12-02 09:06:36

这是因为您的 Web 服务器未设置为使用使用该服务的人员的身份,而是使用运行该服务的计算机的身份。

检查 Web 服务的 web.config 是否包含:

That is because your web server is not set up to use the identity of the person using the service, but rather the identity of the computer it is running on.

Check if your web.config for the web service contains: <authentication mode="Windows" />

茶色山野 2024-12-02 09:06:36

在我的情况下我需要做这两件事:

<authentication mode="Windows" />
    <authorization>
        <deny users="?" />
    </authorization>
<identity impersonate="true" />

I needed to do both in my situation:

<authentication mode="Windows" />
    <authorization>
        <deny users="?" />
    </authorization>
<identity impersonate="true" />
时光与爱终年不遇 2024-12-02 09:06:36

我也遇到了同样的问题,并且出于类似的原因。 (脸红)。

尽管我正确地将应用程序池设置为使用服务帐户凭据而不是 LocalService/NetworkService 等,但由于某种原因,应用程序本身没有使用该应用程序池。它被设置为 DefaultAppPool。如果人们继续假设 IIS 设置正确,则很容易错过这一点。

I had the same problem, and for a similar reason. (blush).

Even though I correctly set up my application pool to use the service account credentials instead of the LocalService/NetworkService etc, for some reason the Application itself was not using that application pool. It was set to DefaultAppPool. Very easy to miss, if one continues to assume that IIS was set up correctly.

请远离我 2024-12-02 09:06:36

检查 IIS 上托管的应用程序是否在正确的应用程序池而不是 DefaultAppPool 下运行。

Check that the applications hosted on IIS are running under the correct application pool rather than the DefaultAppPool.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文