Search code examples
azure-active-directorydatagripssms-16

JetBrains DataGrip - Azure SQL - connect with Active Directory - Password


Is it possible to connect to Azure SQL database the same way as I would with Microsoft SQL Management Studio - the "Active Directory - Password" option.

enter image description here

I followed the instructions from here (JetBrains documentation) but when I select "Use Windows Domain authentication" (as I should for Azure Active Directory) it doesn't let me to enter the credentials as SSMS does.

Everything works fine with SSMS but with DataGrip I have no luck. Is this option just not supported in there?

enter image description here


Solution

  • The solution was posted by https://codejuicer.com/, copied from following blog: https://codejuicer.com/2018/08/29/datagrip-and-azure-sql-server-active-directory-howto/

    Step 1: Get A Few Required JARs. The main library you’ll be working with is ADAL4J (https://github.com/AzureAD/azure-activedirectory-library-for-java/wiki/ADAL4J-Basics). The simplest way to do this step, in my opinion, is to use a barebones Maven pom.xml. That way you don’t have to compile from source and find all the dependencies manually. Horray!

    If you don’t have Maven (https://maven.apache.org/) installed you’ll need it. If you prefer Gradle, I’m sure the same can be accomplished with that.

    This is what my pom.xml looks like:

    <?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>
    

    Now run this command wherever your pom.xml is at:

    mvn clean dependency:copy-dependencies
    

    It will create a “lib” directory containing all the jars you need.

    Step 2: Add the JARs to the Azure (Microsoft) Driver 1. In the Data Sources and Drivers window (File menu), select the Azure (Microsoft) driver. In the Driver files pane, click the + button and select “Custom JARs...“ enter image description here 2. Navigate to the JARs fetched in Step 1. Select all of them. enter image description here Your screen should look something like this (aside from the fancy blurs to hide my super secret info). enter image description here Step 3: Altering the Advanced Connection Options There is only one thing you need to change for Active Directory authentication. The authentication method. It’s really easy.

    At this point, I’m assuming you have an existing connection. If not, create one and select the Azure (Microsoft) driver.

    Navigate to the Advanced tab. I like to sort the options by Name. However you do it, find the setting named “authentication.”

    Click in the Value column and select ActiveDirectoryPassword (if you’re on Windows™ and use integrated AD… select ActiveDirectoryIntegrated). enter image description here I imagine I don’t have to tell you to “click OK or Apply.”

    Success (I hope)! At this point you should be able to log in to your database instance. Of course, that assumes your credentials and hostname are correct. I hope this helps!