-
-
Save daniel-shuy/62ef61a3e64bd1764931a8d3dda36e3e to your computer and use it in GitHub Desktop.
| 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, | |
| ) |
How about :
def verifyToken(token: String): AccessToken = { AdapterTokenVerifier.verifyToken(token, keycloakDeployment) }Does the key check for you.
@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.
@arw357 If you use
AdapterTokenVerifier.verifyTokenyou'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).
@arw357 If you use
AdapterTokenVerifier.verifyTokenyou'll have a blocking call to keycloak (viaPublicKeyLocator). Considering performance, i don't think that's a good idea.