Skip to content

Querying a SQL Server database requiring MFA over RJDBC #94

Description

@aaelony-aeg

Querying SQL via ODBC with MS-SQL Server is not supported on MacOs using MFA (see the Microsoft ODBC driver feature matrix). According to the same document, JDBC is supported.

How to connect to a MS-SQL Server database using RJDBC and MFA?

MFA appears to require MSAL4J to enable MFA. In any case, configuration is not intuitive or trivial, though apparently possible.

A skeleton so far is:

library(rJava)
library(RJDBC)

## ---- Set up the Driver variable
drv <- JDBC(
  driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver", 
  classPath = "/Users/myusername/sqljdbc_10.2_enu/mssql-jdbc-10.2.1.jre17.jar",
  identifier.quote="`")

conn <- dbConnect(
  drv, 
  url = "jdbc:sqlserver://MY_SERVER_NAME;Encrypt=true;TrustServerCertificate=false;Connection Timeout=30;Authentication=ActiveDirectoryInteractive",
 "my_user_name",
  rstudioapi::askForPassword("Database password")
)

this almost works:

Error in dbConnect(drv, url = ...
Unable to connect JDBC to jdbc:sqlserver:// ...
JDBC ERROR: Failed to load MSAL4J Java library for performing ActiveDirectoryInteractive authentication.

So, this is close but unclear how to correctly include the MFA java library at this point.

Any recommendations ?

Perhaps how to include an arbitrary maven artifact from RJDBC like

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>msal4j</artifactId>
    <version>1.13.0</version>
</dependency>

??

thanks in advance

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions