diff --git a/kafka/src/main/scala/com.snowplowanalytics.snowplow.collectors.scalastream/sinks/AzureAuthenticationCallbackHandler.scala b/kafka/src/main/scala/com.snowplowanalytics.snowplow.collectors.scalastream/sinks/AzureAuthenticationCallbackHandler.scala index f19dd8bd7..e2ac03050 100644 --- a/kafka/src/main/scala/com.snowplowanalytics.snowplow.collectors.scalastream/sinks/AzureAuthenticationCallbackHandler.scala +++ b/kafka/src/main/scala/com.snowplowanalytics.snowplow.collectors.scalastream/sinks/AzureAuthenticationCallbackHandler.scala @@ -21,17 +21,14 @@ import org.apache.kafka.common.security.auth.AuthenticateCallbackHandler import org.apache.kafka.common.security.oauthbearer.OAuthBearerToken import org.apache.kafka.common.security.oauthbearer.OAuthBearerTokenCallback -import com.microsoft.azure.credentials.MSICredentials +import com.azure.identity.DefaultAzureCredentialBuilder +import com.azure.core.credential.TokenRequestContext import com.nimbusds.jwt.JWTParser class AzureAuthenticationCallbackHandler extends AuthenticateCallbackHandler { - val credentials: MSICredentials = { - val clientId = sys.env.get("AZURE_CLIENT_ID_FOR_EVENT_HUB").orElse(sys.env.get("AZURE_CLIENT_ID")) - val creds = new MSICredentials() - clientId.map(creds.withClientId).getOrElse(creds) - } + val credentials = new DefaultAzureCredentialBuilder().build() var sbUri: String = "" @@ -64,7 +61,9 @@ class AzureAuthenticationCallbackHandler extends AuthenticateCallbackHandler { } def getOAuthBearerToken(): OAuthBearerToken = { - val accessToken = credentials.getToken(sbUri) + val reqContext = new TokenRequestContext() + reqContext.addScopes(sbUri) + val accessToken = credentials.getTokenSync(reqContext).getToken val jwt = JWTParser.parse(accessToken) val claims = jwt.getJWTClaimsSet diff --git a/project/BuildSettings.scala b/project/BuildSettings.scala index 44d4af77e..8bd46e191 100644 --- a/project/BuildSettings.scala +++ b/project/BuildSettings.scala @@ -88,7 +88,7 @@ object BuildSettings { libraryDependencies ++= Seq( Dependencies.Libraries.kafkaClients, Dependencies.Libraries.mskAuth, - Dependencies.Libraries.azureAuth, + Dependencies.Libraries.azureIdentity, // integration tests dependencies Dependencies.Libraries.IntegrationTests.specs2, diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 01a1ee923..c8f1bfcd2 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -41,6 +41,7 @@ object Dependencies { val tracker = "2.0.0" val dataDog4s = "0.32.0" val azureAuth = "1.7.14" + val azureIdentity = "1.11.0" } object Libraries { @@ -75,7 +76,7 @@ object Dependencies { val pubsub = "com.google.cloud" % "google-cloud-pubsub" % V.pubsub val sqs = "com.amazonaws" % "aws-java-sdk-sqs" % V.awsSdk val sts = "com.amazonaws" % "aws-java-sdk-sts" % V.awsSdk % Runtime // Enables web token authentication https://github.com/snowplow/stream-collector/issues/169 - val azureAuth = "com.microsoft.azure" % "azure-client-authentication" % V.azureAuth + val azureIdentity = "com.azure" % "azure-identity" % V.azureIdentity //common unit tests val specs2 = "org.specs2" %% "specs2-core" % V.specs2 % Test