in connector/src/main/scala/com/microsoft/kusto/spark/utils/KustoDataSourceUtils.scala [794:829]
private[kusto] def mergeKeyVaultAndOptionsAuthentication(
paramsFromKeyVault: AadApplicationAuthentication,
authenticationParameters: Option[KustoAuthentication]): KustoAuthentication = {
if (authenticationParameters.isEmpty) {
// We have both keyVault and AAD application params, take from options first and throw if both are empty
try {
val app = authenticationParameters.asInstanceOf[AadApplicationAuthentication]
AadApplicationAuthentication(
ID = if (app.ID == "") {
if (paramsFromKeyVault.ID == "") {
throw new InvalidParameterException(
"AADApplication ID is empty. Please pass it in keyVault or options")
}
paramsFromKeyVault.ID
} else {
app.ID
},
password = if (app.password == "") {
if (paramsFromKeyVault.password == "AADApplication key is empty. Please pass it in keyVault or options") {
throw new InvalidParameterException("")
}
paramsFromKeyVault.password
} else {
app.password
},
authority =
if (app.authority == "microsoft.com") paramsFromKeyVault.authority else app.authority)
} catch {
case _: ClassCastException =>
throw new UnsupportedOperationException(
"keyVault authentication can be combined only with AADAplicationAuthentication")
}
} else {
paramsFromKeyVault
}
}