#scala #apache-spark #azure-active-directory #adal
Вопрос:
В настоящее время я работаю над кодом Scala, который может установить соединение с базой данных SQL server с помощью токена AD.
В Интернете слишком мало документации на эту тему, поэтому я пытаюсь работать над ней с помощью 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()
Ответ №1:
Вот код Java, который вы можете использовать в качестве основы, используя функцию AcquireToken:
import com.microsoft.aad.adal4j.AuthenticationContext;
import com.microsoft.aad.adal4j.AuthenticationResu<
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 (вот руководство по миграции)
Комментарии:
1. Как я могу использовать результат, пожалуйста ? Я сделал println(результат) и получил com.microsoft.aad.adal4j. AuthenticationResult@c65a3855 Как я могу на самом деле использовать токен ?
2. позвольте мне обновить ответ. Вы получаете токен как
result.getAccessToken()