JetBrains DataGrip - 如何连接 Azure SQL 并使用 Active Directory 密码验证

4

我能否像使用Microsoft SQL Management Studio一样连接Azure SQL数据库-使用"Active Directory - Password"选项。

enter image description here

我按照这里的说明(JetBrains文档)进行操作,但是当我选择“使用Windows域身份验证”(应该用于Azure Active Directory)时,它不允许我像SSMS那样输入凭据。

在SSMS中一切正常,但是在DataGrip中没有成功。这个选项在DataGrip中不支持吗?

enter image description here

2个回答

1

该解决方案由https://codejuicer.com/发布,源自以下博客:https://codejuicer.com/2018/08/29/datagrip-and-azure-sql-server-active-directory-howto/

步骤1:获取几个必需的JAR文件。你将主要使用的库是ADAL4J(https://github.com/AzureAD/azure-activedirectory-library-for-java/wiki/ADAL4J-Basics)。在我看来,最简单的方法是使用一个基本的Maven pom.xml文件来完成这一步骤,这样你就不必从源代码编译并手动查找所有依赖项。太棒了!如果您没有安装Maven(https://maven.apache.org/),则需要安装它。如果您喜欢Gradle,我相信也可以用它来完成同样的工作。这是我的pom.xml文件的样子:
<?xml version="1.0" encoding="UTF-8"?>
<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.foo</groupId>
  <artifactId>bar</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
  <dependency>
          <groupId>com.microsoft.azure</groupId>
      <artifactId>adal4j</artifactId>
      <version>1.6.2</version>
  </dependency>
  </dependencies>
  <build>
    <directory>lib</directory>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <configuration>
          <outputDirectory>
            ${project.build.directory}
          </outputDirectory>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

现在无论您的pom.xml文件位于何处,请在其中运行此命令:
mvn clean dependency:copy-dependencies

它将创建一个“lib”目录,其中包含您所需的所有jar文件。
步骤2:将JAR添加到Azure(Microsoft)驱动程序
1. 在“数据源和驱动程序”窗口(文件菜单)中,选择Azure(Microsoft)驱动程序。在驱动程序文件窗格中,单击+按钮并选择“自定义JARs ...”
enter image description here
2.导航到步骤1中获取的JAR。选择它们全部。
enter image description here 除了用于隐藏我的超级秘密信息的花哨模糊之外,您的屏幕应该看起来像这样。
enter image description here
步骤3:更改高级连接选项仅需要更改一件事以进行Active Directory身份验证。身份验证方法。这真的很容易。
此时,我假设您已经有现有的连接。如果没有,请创建一个并选择Azure(Microsoft)驱动程序。
导航到高级选项卡。我喜欢按名称对选项进行排序。无论如何,找到名为“authentication”的设置。
单击值列并选择ActiveDirectoryPassword(如果您使用集成AD的Windows™,请选择ActiveDirectoryIntegrated)。
enter image description here
我想我不必告诉您“单击确定或应用”。
成功(我希望)!此时,您应该能够登录到数据库实例。当然,这假设您的凭据和主机名是正确的。我希望这有所帮助!

只添加adal4j jar文件不就足够了吗? - Dragas

1

这是可能的。

  1. 使用JTDS驱动程序,而不是微软的驱动程序。
  2. 转到数据源属性的高级选项卡,将USENTLMV2设置为true,并在DOMAIN字段中指定域名。 enter image description here
  3. 然后在用户/密码字段中输入您的Active Directory凭据,然后单击“测试连接”。

我所得到的是:连接到 SQL Server (jTds) - xxx@xxx.database.windows.net 失败。[S1000][40607] 此版本的 SQL Server 不支持 Windows 登录。 - Jakub Holovsky
啊,抱歉,你需要进行一些操作:https://intellij-support.jetbrains.com/hc/en-us/community/posts/360000014000-Can-t-sign-into-Azure-DB-with-Datagrip-but-can-with-SMSS - moscas
谢谢你提供的链接,但我希望能够清楚地了解如何处理这个问题,但这个问题本身似乎并没有得到解决且非常不清晰。 - Jakub Holovsky
不知道为什么这个被踩了。它对我来说完全有效。 - Andy Poquette

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接