Last active
February 11, 2022 17:56
-
-
Save daniel-shuy/62ef61a3e64bd1764931a8d3dda36e3e to your computer and use it in GitHub Desktop.
Akka HTTP (Scala) Keycloak token verifier
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
val akkaVersion = "2.5.23" | |
val akkaHttpVersion = "10.1.8" | |
val keycloakVersion = "6.0.1" | |
libraryDependencies ++= Seq( | |
"com.typesafe.akka" %% "akka-http" % akkaHttpVersion, | |
"com.typesafe.akka" %% "akka-stream" % akkaVersion, | |
"org.keycloak" % "keycloak-adapter-core" % keycloakVersion, | |
"org.keycloak" % "keycloak-core" % keycloakVersion, | |
) |
@arw357 If you use
AdapterTokenVerifier.verifyToken
you'll have a blocking call to keycloak (viaPublicKeyLocator
). Considering performance, i don't think that's a good idea.
@el-dom The blocking call can be wrapped in a Future
to run on a separate dispatcher from the Akka HTTP routing dispatcher. I've updated this Gist to run it on a new dispatcher called auth-dispatcher
, which needs to be configured in application.conf
(see https://doc.akka.io/docs/akka-http/current/handling-blocking-operations-in-akka-http-routes.html#solution-dedicated-dispatcher-for-blocking-operations).
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@arw357 Ah I wasn't aware of
AdapterTokenVerifier
, it handles all of that (key rotation) automatically. I've updated this Gist to use it instead.