如何将此代码转换为 scala(使用 adal 生成 Azure AD 令牌)

How to convert this code to scala (using adal to generate Azure AD token)

我目前正在编写 Scala 代码,它可以使用 AD 令牌建立与 SQL 服务器数据库的连接。

关于该主题的在线文档太少,因此我尝试使用 python 来研究它。现在它正在运行,我希望将我的代码转换为 Scala。

这是 python 脚本:

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()

这里是 Java 代码,您可以使用 acquireToken 函数作为基础:

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。不过说真的,ADAL的用法已经不推荐了,还是用MSAL instead (here is the migration guide)

比较好