【问题标题】:Windows authentication trusted connection not workingWindows 身份验证受信任的连接不起作用
【发布时间】:2009-05-19 10:16:40
【问题描述】:

MSSQL Server 位于“abc”域中并具有混合模式身份验证。 我从不在域或域“xyz”但使用 MSSQL Jdbc 驱动程序 2.0 的同一网络中的机器连接。我已经以管理员或 xyz 域中的帐户登录。

使用以下 url 连接“sa”或 SQL 模式身份验证可以正常工作。

jdbc:sqlserver://%DB_IP%:%DB_PORT%;SelectMethod=cursor;DatabaseName=dbname

对于使用凭据"MSSQLDomain\username""abc\username" 的窗口身份验证,它不起作用,使用以下网址

jdbc:sqlserver://%DB_IP%:%DB_PORT%;SelectMethod=cursor;integratedSecurity=true;DatabaseName=dbname;

给出以下错误。 用户 '' 登录失败。该用户未与受信任的用户关联 SQL Server 连接。

我尝试将属性 Trusted_Connection=Yes 添加到 url,但仍然给出相同的错误。 我不想映射 SQL Server 的驱动器。通过提供“MSSQLDomain\username”和密码,我可以访问 SQL Server 机器的任何共享文件夹。

如果两台机器在同一个域中,这两种身份验证模式都可以正常工作。 如果我从不在域或同一网络(即同一子网)内的“xyz”域中的机器上使用 jtDS 驱动程序,它可以正常工作。

【问题讨论】:

    标签: sql-server database-connection windows-authentication sqlconnection trustedconnection


    【解决方案1】:

    这是 Windows 身份验证经过深思熟虑的正确行为。

    这是因为您从中连接的域与您的 SQL Server 实例所在的 Windows 域不同。

    我相信可以说有桥接域的方法,但是它们需要自定义和棘手的实现。您还必须在域之间配置信任关系。

    以下主题包含您可能会发现有用的讨论。

    http://sql-server-performance.com/Community/forums/p/24601/137574.aspx

    【讨论】:

      【解决方案2】:

      更改登录凭据可能会有所帮助, 使用 SQL 身份验证而不是 nt 身份验证

      https://support.microsoft.com/en-us/kb/555332

      症状

      安装 Microsoft SQL Server 2014、SQL Server 2012、SQL Server 2008、SQL Server 2005 或 SQL Server 2000 并尝试连接到运行 SQL Server 的服务器后,您会收到以下错误消息之一:

      用户 '%.*ls' 登录失败。该登录名是 SQL Server 登录名,不能与 Windows 身份验证一起使用。%.*ls

      用户“”登录失败。用户未与受信任的 SQL Server 连接关联。 (Microsoft SQL Server,错误:18452)

      用户“”登录失败。 (Microsoft SQL Server,错误:18456)

      分辨率

      如果用户尝试使用无法验证的凭据登录,则会出现此问题。在以下情况下可能会出现此问题:

      场景一:

      登录可能是 SQL Server 登录,但服务器只接受 Windows 身份验证

      要解决此问题,请将 SQL Server 配置为混合身份验证模式。

      场景 2:

      您正在尝试使用 SQL Server 身份验证进行连接,但使用的登录名在 SQL Server 上不存在

      要解决此问题,请验证 SQL Server 登录是否存在。有关详细信息,请参阅在 SQL Server 联机丛书中创建登录。

      场景 3:

      登录可能使用 Windows 身份验证,但登录是无法识别的 Windows 主体

      无法识别的 Windows 主体意味着 Windows 无法验证登录。这可能是因为 Windows 登录来自不受信任的域。要解决此问题,请确认您已登录到正确的域。

      【讨论】:

        【解决方案3】:

        我参与了跨域的 SQL 服务器连接,这非常痛苦。为了使用来自另一个域的凭据,您分配权限的域必须信任该帐户来自的域。 IT 专业人员通常非常不愿意以这种方式信任另一个域,这是有充分理由的,因此如果尚未建立这种信任关系,它可能不太可能说服管理员这样做。

        建立信任关系后,您可能需要在 Active Directory 中为您的 SQL 服务器注册 SPN,并分配委派权限。这种类型的环境很难设置、排除故障和维护。

        我希望有其他方法可以做到这一点,因为听起来你正面临一个非常困难的情况。

        希望对你有帮助 日韩

        【讨论】:

          猜你喜欢
          • 2012-09-13
          • 1970-01-01
          • 2012-03-18
          • 2018-03-25
          • 1970-01-01
          • 1970-01-01
          • 2017-09-24
          • 2023-04-03
          • 1970-01-01
          相关资源
          最近更新 更多