Home > Software engineering >  How to convert this code to scala (using adal to generate Azure AD token)
How to convert this code to scala (using adal to generate Azure AD token)

Time:10-25

I am currently working on a Scala code that can establish a connection to an SQL server database using AD token.

There are too little documentation on the subject online so I tries to work on it using python. Now it is working, I am looking to convert my code to Scala.

Here is the python script:

context = adal.AuthenticationContext(AUTHORITY_URL)
token = context.acquire_token_with_client_credentials("https://database.windows.net/", CLIENT_ID, CLIENT_SECRET)
access_token = token["accessToken"]

df= spark.read \
        .format("com.microsoft.sqlserver.jdbc.spark") \
        .option("url", URL) \
        .option("dbtable", "tab1") \
        .option("accessToken", access_token) \
        .option("hostNameInCertificate", "*.database.windows.net") \
        .load()

df.show()

CodePudding user response:

Here is the Java code that you can use as a base, using the acquireToken function:

import com.microsoft.aad.adal4j.AuthenticationContext;
import com.microsoft.aad.adal4j.AuthenticationResult;
import com.microsoft.aad.adal4j.ClientCredential;

...

String authority = "https://login.microsoftonline.com/<org-uuid>;
ExecutorService service = Executors.newFixedThreadPool(1);
AuthenticationContext context = new AuthenticationContext(authority, true, service);
ClientCredential credential = new ClientCredential("sp-client-id", "sp-client-secret");
AuthenticationResult result = context.acquireToken("resource_id", credential, null).get();
// get token
String token = result.getAccessToken()

P.S. But really, ADAL's usage isn't recommended anymore, it's better to use MSAL instead (here is the migration guide)

  • Related