From 1aee6f40890d5b2d7abb82f1cc5c953b0ce2d956 Mon Sep 17 00:00:00 2001 From: Oliver <20188437+olivergrabinski@users.noreply.github.com> Date: Tue, 14 Nov 2023 11:29:47 +0100 Subject: [PATCH] Allow to specify JWK keys as json objects in the storage config (#4498) --- .../nexus/storage/auth/AuthorizationMethod.scala | 13 +++++++------ .../storage/auth/AuthorizationMethodSuite.scala | 8 ++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/storage/src/main/scala/ch/epfl/bluebrain/nexus/storage/auth/AuthorizationMethod.scala b/storage/src/main/scala/ch/epfl/bluebrain/nexus/storage/auth/AuthorizationMethod.scala index c65506e2bf..7706835fb0 100644 --- a/storage/src/main/scala/ch/epfl/bluebrain/nexus/storage/auth/AuthorizationMethod.scala +++ b/storage/src/main/scala/ch/epfl/bluebrain/nexus/storage/auth/AuthorizationMethod.scala @@ -9,9 +9,9 @@ import pureconfig.ConfigReader import pureconfig.generic.semiauto.deriveReader import pureconfig.module.cats._ +import java.util import scala.annotation.nowarn import scala.jdk.CollectionConverters._ -import scala.util.Try /** * Authorization config @@ -55,12 +55,13 @@ object AuthorizationMethod { @nowarn("cat=unused") implicit val authorizationMethodConfigReader: ConfigReader[AuthorizationMethod] = { - implicit val jwkReader: ConfigReader[JWK] = ConfigReader.fromStringTry { s => Try(JWK.parse(s)) } - implicit val jwkSetReader: ConfigReader[JWKSet] = ConfigReader[NonEmptyList[JWK]].map { l => - new JWKSet(l.toList.asJava) + implicit val jsonObjectReader: ConfigReader[util.Map[String, AnyRef]] = + ConfigReader.configObjectConfigReader.map(configObj => configObj.unwrapped()) + implicit val jwkSetReader: ConfigReader[JWKSet] = ConfigReader[NonEmptyList[util.Map[String, AnyRef]]].map { + jwkKeys => new JWKSet(jwkKeys.map(key => JWK.parse(key)).toList.asJava) } - implicit val anonymousReader = deriveReader[Anonymous.type] - implicit val verifyToken: ConfigReader[VerifyToken] = deriveReader[VerifyToken] + implicit val anonymousReader = deriveReader[Anonymous.type] + implicit val verifyToken: ConfigReader[VerifyToken] = deriveReader[VerifyToken] deriveReader[AuthorizationMethod] } diff --git a/storage/src/test/scala/ch/epfl/bluebrain/nexus/storage/auth/AuthorizationMethodSuite.scala b/storage/src/test/scala/ch/epfl/bluebrain/nexus/storage/auth/AuthorizationMethodSuite.scala index 96dfa8c593..9c8aedf539 100644 --- a/storage/src/test/scala/ch/epfl/bluebrain/nexus/storage/auth/AuthorizationMethodSuite.scala +++ b/storage/src/test/scala/ch/epfl/bluebrain/nexus/storage/auth/AuthorizationMethodSuite.scala @@ -39,7 +39,7 @@ class AuthorizationMethodSuite extends FunSuite { | issuer = bbp | subject = admin | audiences = [dev, staging] - | keys = [ "${key1.toJSONString}", "${key2.toJSONString}"] + | keys = [ ${key1.toJSONString}, ${key2.toJSONString}] |} |""".stripMargin ) @@ -60,7 +60,7 @@ class AuthorizationMethodSuite extends FunSuite { | type = verify-token | issuer = bbp | subject = admin - | keys = [ "${key1.toJSONString}" ] + | keys = [ ${key1.toJSONString} ] |} |""".stripMargin ) @@ -80,7 +80,7 @@ class AuthorizationMethodSuite extends FunSuite { |authorization { | type = verify-token | subject = admin - | keys = [ "${key1.toJSONString}" ] + | keys = [ ${key1.toJSONString} ] |} |""".stripMargin ) @@ -96,7 +96,7 @@ class AuthorizationMethodSuite extends FunSuite { |authorization { | type = verify-token | issuer = bbp - | keys = [ "${key1.toJSONString}" ] + | keys = [ ${key1.toJSONString} ] |} |""".stripMargin )