From 05e5ba0387bcf33e383cc9ace3ba1b6e5543bb5e Mon Sep 17 00:00:00 2001 From: yannis Date: Wed, 10 Aug 2022 10:46:29 +0200 Subject: [PATCH 1/6] Upgraded to latest version for all packages apart from keycloak/mariadb --- build.sbt | 57 ++++++++++--------- project/build.properties | 2 +- .../ing/wbaa/rokku/sts/RokkuStsService.scala | 6 +- .../com/ing/wbaa/rokku/sts/api/AdminApi.scala | 6 +- .../com/ing/wbaa/rokku/sts/api/STSApi.scala | 4 +- .../com/ing/wbaa/rokku/sts/api/UserApi.scala | 44 ++++++++------ .../ing/wbaa/rokku/sts/api/xml/TokenXML.scala | 3 +- .../wbaa/rokku/sts/config/HttpSettings.scala | 2 +- .../rokku/sts/config/KeycloakSettings.scala | 2 +- .../rokku/sts/config/MariaDBSettings.scala | 2 +- .../wbaa/rokku/sts/config/StsSettings.scala | 2 +- .../wbaa/rokku/sts/config/VaultSettings.scala | 2 +- .../sts/service/UserTokenDbService.scala | 46 ++++++++------- .../ing/wbaa/rokku/sts/api/STSApiTest.scala | 1 + .../ing/wbaa/rokku/sts/api/UserApiTest.scala | 21 ++++--- 15 files changed, 110 insertions(+), 90 deletions(-) diff --git a/build.sbt b/build.sbt index 11b95c6..2297382 100644 --- a/build.sbt +++ b/build.sbt @@ -6,7 +6,7 @@ val rokkuStsVersion = scala.sys.env.getOrElse("ROKKU_STS_VERSION", "SNAPSHOT") name := "rokku-sts" version := rokkuStsVersion -scalaVersion := "2.13.1" +scalaVersion := "2.13.8" scalacOptions := Seq( "-unchecked", @@ -15,43 +15,44 @@ scalacOptions := Seq( "-target:jvm-1.8", "-feature", "-Xlint", - "-Xfatal-warnings" + "-Xfatal-warnings", ) // Experimental: improved update resolution. -updateOptions := updateOptions.value.withCachedResolution(cachedResoluton = true) +updateOptions := updateOptions.value.withCachedResolution(true) assemblyJarName in assembly := "rokku-sts.jar" -val akkaVersion = "2.6.3" -val akkaHttpVersion = "10.1.11" +val akkaVersion = "2.6.19" +val akkaHttpVersion = "10.2.9" val keycloakVersion = "8.0.2" val logbackJson = "0.1.5" libraryDependencies ++= Seq( - "com.typesafe.akka" %% "akka-http" % akkaHttpVersion, - "com.typesafe.akka" %% "akka-stream" % akkaVersion, - "ch.megard" %% "akka-http-cors" % "0.4.2", - "com.typesafe.akka" %% "akka-http-spray-json" % akkaHttpVersion, - "com.typesafe.akka" %% "akka-http-xml" % akkaHttpVersion, - "com.typesafe.scala-logging" %% "scala-logging" % "3.9.2", - "ch.qos.logback" % "logback-classic" % "1.2.3", - "com.typesafe.akka" %% "akka-slf4j" % akkaVersion, - "org.keycloak" % "keycloak-core" % keycloakVersion, - "org.keycloak" % "keycloak-adapter-core" % keycloakVersion, - "org.keycloak" % "keycloak-admin-client" % keycloakVersion, - "org.jboss.logging" % "jboss-logging" % "3.3.2.Final", - "org.apache.httpcomponents" % "httpclient" % "4.5.6", - "org.mariadb.jdbc" % "mariadb-java-client" % "2.3.0", - "ch.qos.logback.contrib" % "logback-json-classic" % logbackJson, - "ch.qos.logback.contrib" % "logback-jackson" % logbackJson, - "com.fasterxml.jackson.core" % "jackson-databind" % "2.9.9", - "org.scalatest" %% "scalatest" % "3.1.0" % "test, it", - "com.auth0" % "java-jwt" % "3.8.0", - "com.typesafe.akka" %% "akka-http-testkit" % akkaHttpVersion % Test, - "com.typesafe.akka" %% "akka-stream-testkit" % akkaVersion % Test, - "com.amazonaws" % "aws-java-sdk-sts" % "1.11.720" % IntegrationTest, - "com.bettercloud" % "vault-java-driver" % "5.1.0") + "com.typesafe.akka" %% "akka-http" % akkaHttpVersion, + "com.typesafe.akka" %% "akka-stream" % akkaVersion, + "ch.megard" %% "akka-http-cors" % "1.1.3", + "com.typesafe.akka" %% "akka-http-spray-json" % akkaHttpVersion, + "com.typesafe.akka" %% "akka-http-xml" % akkaHttpVersion, + "com.typesafe.scala-logging" %% "scala-logging" % "3.9.2", + "ch.qos.logback" % "logback-classic" % "1.2.11", + "com.typesafe.akka" %% "akka-slf4j" % akkaVersion, + "org.keycloak" % "keycloak-core" % keycloakVersion, + "org.keycloak" % "keycloak-adapter-core" % keycloakVersion, + "org.keycloak" % "keycloak-admin-client" % keycloakVersion, + "org.jboss.logging" % "jboss-logging" % "3.5.0.Final", + "org.apache.httpcomponents" % "httpclient" % "4.5.13", + "org.mariadb.jdbc" % "mariadb-java-client" % "2.3.0", + "ch.qos.logback.contrib" % "logback-json-classic" % logbackJson, + "ch.qos.logback.contrib" % "logback-jackson" % logbackJson, + "com.fasterxml.jackson.core" % "jackson-databind" % "2.13.3", + "com.auth0" % "java-jwt" % "4.0.0", + "com.bettercloud" % "vault-java-driver" % "5.1.0", + "org.scalatest" %% "scalatest" % "3.2.13" % "test, it", + "com.typesafe.akka" %% "akka-http-testkit" % akkaHttpVersion % Test, + "com.typesafe.akka" %% "akka-stream-testkit" % akkaVersion % Test, + "com.amazonaws" % "aws-java-sdk-sts" % "1.12.278" % IntegrationTest, +) configs(IntegrationTest) diff --git a/project/build.properties b/project/build.properties index dcfaffb..2ec6cd9 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version = 1.3.8 +sbt.version = 1.4.0 diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/RokkuStsService.scala b/src/main/scala/com/ing/wbaa/rokku/sts/RokkuStsService.scala index 6df1b17..60472d6 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/RokkuStsService.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/RokkuStsService.scala @@ -27,8 +27,6 @@ trait RokkuStsService protected[this] def httpSettings: HttpSettings - import com.ing.wbaa.rokku.sts.handler.StsExceptionHandlers.exceptionHandler - // The routes we serve final val allRoutes: Route = toStrictEntity(3.seconds) { @@ -40,7 +38,7 @@ trait RokkuStsService // Details about the server binding. final val startup: Future[Http.ServerBinding] = { - Http(system).bindAndHandle(allRoutes, httpSettings.httpBind, httpSettings.httpPort) + Http().newServerAt(httpSettings.httpBind, httpSettings.httpPort).bind(allRoutes) .andThen { case Success(binding) => logger.info(s"Sts service started listening: ${binding.localAddress}") case Failure(reason) => logger.error("Sts service failed to start.", reason) @@ -48,7 +46,7 @@ trait RokkuStsService } def shutdown(): Future[Done] = { - startup.flatMap(_.unbind) + startup.flatMap(_.unbind()) .andThen { case Success(_) => logger.info("Sts service stopped.") case Failure(reason) => logger.error("Sts service failed to stop.", reason) diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/api/AdminApi.scala b/src/main/scala/com/ing/wbaa/rokku/sts/api/AdminApi.scala index 39f40ca..366b7c0 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/api/AdminApi.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/api/AdminApi.scala @@ -53,7 +53,7 @@ trait AdminApi extends LazyLogging with Encryption with JwtToken { def addNPA: Route = logRequestResult("debug") { post { path("npa") { - formFields((Symbol("npaAccount"), Symbol("safeName"), Symbol("awsAccessKey"), Symbol("awsSecretKey"))) { (npaAccount, safeName, awsAccessKey, awsSecretKey) => + formFields("npaAccount", "safeName", "awsAccessKey", "awsSecretKey") { (npaAccount, safeName, awsAccessKey, awsSecretKey) => authorizeToken(verifyAuthenticationToken) { keycloakUserInfo => if (userInAdminGroups(keycloakUserInfo.userGroups)) { val awsCredentials = AwsCredential(AwsAccessKey(awsAccessKey), AwsSecretKey(awsSecretKey)) @@ -81,7 +81,7 @@ trait AdminApi extends LazyLogging with Encryption with JwtToken { def addServiceNPA: Route = logRequestResult("debug") { post { path("service" / "npa") { - formFields((Symbol("npaAccount"), Symbol("safeName"), Symbol("awsAccessKey"), Symbol("awsSecretKey"))) { (npaAccount, safeName, awsAccessKey, awsSecretKey) => + formFields("npaAccount", "safeName", "awsAccessKey", "awsSecretKey") { (npaAccount, safeName, awsAccessKey, awsSecretKey) => headerValueByName("Authorization") { bearerToken => if (verifyInternalToken(bearerToken)) { val awsCredentials = AwsCredential(AwsAccessKey(awsAccessKey), AwsSecretKey(awsSecretKey)) @@ -149,7 +149,7 @@ trait AdminApi extends LazyLogging with Encryption with JwtToken { path("keycloak" / "user") { formFields((Symbol("username"))) { username => authorizeToken(verifyAuthenticationToken) { keycloakUserInfo => - extractUri { uri => + extractUri { _ => if (userInAdminGroups(keycloakUserInfo.userGroups)) { onComplete(insertUserToKeycloak(UserName(username))) { case Success(_) => complete(ResponseMessage(s"Add user ok", s"$username added", "keycloak")) diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/api/STSApi.scala b/src/main/scala/com/ing/wbaa/rokku/sts/api/STSApi.scala index 8d8ef83..ac22079 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/api/STSApi.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/api/STSApi.scala @@ -33,8 +33,8 @@ trait STSApi extends LazyLogging with TokenXML { } private val assumeRoleInputs = { - val inputList = (Symbol("RoleArn"), Symbol("RoleSessionName"), "DurationSeconds".as[Int].?) - (parameters(inputList) | formFields(inputList)).tmap(t => + // val inputList = ("RoleArn", "RoleSessionName", "DurationSeconds".as[Int].?) + (parameters("RoleArn", "RoleSessionName", "DurationSeconds".as[Int].?) | formFields("RoleArn", "RoleSessionName", "DurationSeconds".as[Int].?)).tmap(t => t.copy(_1 = AwsRoleArn(t._1), _3 = parseDurationSeconds(t._3)) ) } diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/api/UserApi.scala b/src/main/scala/com/ing/wbaa/rokku/sts/api/UserApi.scala index 4d1561d..cf0892e 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/api/UserApi.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/api/UserApi.scala @@ -6,7 +6,7 @@ import akka.http.scaladsl.server.Route import com.ing.wbaa.rokku.sts.data.aws.{ AwsAccessKey, AwsSessionToken } import com.ing.wbaa.rokku.sts.data.{ RequestId, STSUserInfo, UserAssumeRole, UserGroup } import com.ing.wbaa.rokku.sts.handler.LoggerHandlerWithId -import com.ing.wbaa.rokku.sts.util.JwtToken +import com.ing.wbaa.rokku.sts.util.{ JwtToken, JwtTokenException } import spray.json.RootJsonFormat import scala.concurrent.Future @@ -36,27 +36,35 @@ trait UserApi extends JwtToken { case None => RequestId("") } - if (verifyInternalToken(bearerToken)) { - parameters((Symbol("accessKey"), Symbol("sessionToken").?)) { (accessKey, sessionToken) => - onSuccess(isCredentialActive(AwsAccessKey(accessKey), sessionToken.map(AwsSessionToken))) { + var isBearerTokenValid = false + try { + isBearerTokenValid = verifyInternalToken(bearerToken) + if (isBearerTokenValid) { + parameters("accessKey", "sessionToken".?) { (accessKey, sessionToken) => + onSuccess(isCredentialActive(AwsAccessKey(accessKey), sessionToken.map(AwsSessionToken))) { - case Some(userInfo) => - logger.info("isCredentialActive ok for accessKey={}, sessionToken={}", accessKey, sessionToken) - complete((StatusCodes.OK, UserInfoToReturn( - userInfo.userName.value, - userInfo.userGroup.map(_.value), - userInfo.awsAccessKey.value, - userInfo.awsSecretKey.value, - userInfo.userRole.getOrElse(UserAssumeRole("")).value))) + case Some(userInfo) => + logger.info("isCredentialActive ok for accessKey={}, sessionToken={}", accessKey, sessionToken) + complete((StatusCodes.OK, UserInfoToReturn( + userInfo.userName.value, + userInfo.userGroup.map(_.value), + userInfo.awsAccessKey.value, + userInfo.awsSecretKey.value, + userInfo.userRole.getOrElse(UserAssumeRole("")).value))) - case None => - logger.warn("isCredentialActive forbidden for accessKey={}, sessionToken={}", accessKey, sessionToken) - complete(StatusCodes.Forbidden) + case None => + logger.warn("isCredentialActive forbidden for accessKey={}, sessionToken={}", accessKey, sessionToken) + complete(StatusCodes.Forbidden) + } } + } else { + logger.warn("isCredentialActive not verified for token={}", bearerToken) + complete(StatusCodes.Forbidden) } - } else { - logger.warn("isCredentialActive not verified for token={}", bearerToken) - complete(StatusCodes.Forbidden) + } catch { + case ex: JwtTokenException => + logger.warn("isCredentialActive malformed token={}, $s", bearerToken, ex.getMessage) + complete(StatusCodes.BadRequest) } } } diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/api/xml/TokenXML.scala b/src/main/scala/com/ing/wbaa/rokku/sts/api/xml/TokenXML.scala index 0ee4565..96474f1 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/api/xml/TokenXML.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/api/xml/TokenXML.scala @@ -7,6 +7,7 @@ import com.ing.wbaa.rokku.sts.data.AuthenticationTokenId import com.ing.wbaa.rokku.sts.data.aws.{ AwsCredentialWithToken, AwsRoleArn } import scala.xml.NodeSeq +import scala.annotation.unused trait TokenXML extends ScalaXmlSupport { @@ -25,7 +26,7 @@ trait TokenXML extends ScalaXmlSupport { awsCredentialWithToken: AwsCredentialWithToken, roleArn: AwsRoleArn, roleSessionName: String, - keycloakTokenId: AuthenticationTokenId + @unused keycloakTokenId: AuthenticationTokenId ): NodeSeq = { diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/config/HttpSettings.scala b/src/main/scala/com/ing/wbaa/rokku/sts/config/HttpSettings.scala index 7c343e6..6d4a3cb 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/config/HttpSettings.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/config/HttpSettings.scala @@ -11,6 +11,6 @@ class HttpSettings(config: Config) extends Extension { object HttpSettings extends ExtensionId[HttpSettings] with ExtensionIdProvider { override def createExtension(system: ExtendedActorSystem): HttpSettings = new HttpSettings(system.settings.config) - override def lookup(): ExtensionId[HttpSettings] = HttpSettings + override def lookup: ExtensionId[HttpSettings] = HttpSettings } diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/config/KeycloakSettings.scala b/src/main/scala/com/ing/wbaa/rokku/sts/config/KeycloakSettings.scala index 74bbd94..4a7d37d 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/config/KeycloakSettings.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/config/KeycloakSettings.scala @@ -21,5 +21,5 @@ class KeycloakSettings(config: Config) extends Extension { object KeycloakSettings extends ExtensionId[KeycloakSettings] with ExtensionIdProvider { override def createExtension(system: ExtendedActorSystem): KeycloakSettings = new KeycloakSettings(system.settings.config) - override def lookup(): ExtensionId[KeycloakSettings] = KeycloakSettings + override def lookup: ExtensionId[KeycloakSettings] = KeycloakSettings } diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/config/MariaDBSettings.scala b/src/main/scala/com/ing/wbaa/rokku/sts/config/MariaDBSettings.scala index 128fe26..4190dd1 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/config/MariaDBSettings.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/config/MariaDBSettings.scala @@ -12,5 +12,5 @@ class MariaDBSettings(config: Config) extends Extension { object MariaDBSettings extends ExtensionId[MariaDBSettings] with ExtensionIdProvider { override def createExtension(system: ExtendedActorSystem): MariaDBSettings = new MariaDBSettings(system.settings.config) - override def lookup(): ExtensionId[MariaDBSettings] = MariaDBSettings + override def lookup: ExtensionId[MariaDBSettings] = MariaDBSettings } diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/config/StsSettings.scala b/src/main/scala/com/ing/wbaa/rokku/sts/config/StsSettings.scala index 076f5b3..7876707 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/config/StsSettings.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/config/StsSettings.scala @@ -20,5 +20,5 @@ class StsSettings(config: Config) extends Extension { object StsSettings extends ExtensionId[StsSettings] with ExtensionIdProvider { override def createExtension(system: ExtendedActorSystem): StsSettings = new StsSettings(system.settings.config) - override def lookup(): ExtensionId[StsSettings] = StsSettings + override def lookup: ExtensionId[StsSettings] = StsSettings } diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/config/VaultSettings.scala b/src/main/scala/com/ing/wbaa/rokku/sts/config/VaultSettings.scala index 419ca94..a4a4ef3 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/config/VaultSettings.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/config/VaultSettings.scala @@ -21,5 +21,5 @@ class VaultSettings(config: Config) extends Extension { object VaultSettings extends ExtensionId[VaultSettings] with ExtensionIdProvider { override def createExtension(system: ExtendedActorSystem): VaultSettings = new VaultSettings(system.settings.config) - override def lookup(): ExtensionId[VaultSettings] = VaultSettings + override def lookup: ExtensionId[VaultSettings] = VaultSettings } diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/service/UserTokenDbService.scala b/src/main/scala/com/ing/wbaa/rokku/sts/service/UserTokenDbService.scala index 6ab8401..db360bb 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/service/UserTokenDbService.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/service/UserTokenDbService.scala @@ -77,25 +77,28 @@ trait UserTokenDbService extends LazyLogging with TokenGeneration { getUserSecretWithExtInfo(awsAccessKey) flatMap { case Some((userName, awsSecretKey, NPA(isNPA), AccountStatus(isEnabled), groups)) => awsSessionToken match { - case Some(sessionToken) if isEnabled => - isTokenActive(sessionToken, userName).flatMap { - case TokenActive => Future.successful(Some(STSUserInfo(userName, groups, awsAccessKey, awsSecretKey, None))) - case TokenActiveForRole(role) => Future.successful(Some(STSUserInfo(userName, Set.empty, awsAccessKey, awsSecretKey, Some(role)))) - case TokenNotActive => Future.successful(None) + case Some(sessionToken) => + if (isEnabled) { + isTokenActive(sessionToken, userName).flatMap { + case TokenActive => Future.successful(Some(STSUserInfo(userName, groups, awsAccessKey, awsSecretKey, None))) + case TokenActiveForRole(role) => Future.successful(Some(STSUserInfo(userName, Set.empty, awsAccessKey, awsSecretKey, Some(role)))) + case TokenNotActive => Future.successful(None) + } + } else { + logger.warn(s"User validation failed. User account is not enabled in STS " + + s"(username: $userName, accessKey: $awsAccessKey)") + Future.successful(None) } - case Some(_) if !isEnabled => - logger.warn(s"User validation failed. User account is not enabled in STS " + - s"(username: $userName, accessKey: $awsAccessKey)") - Future.successful(None) - - case None if isNPA && isEnabled => - Future.successful(Some(STSUserInfo(userName, Set.empty, awsAccessKey, awsSecretKey, None))) + case None => + if (isNPA && isEnabled) { + Future.successful(Some(STSUserInfo(userName, Set.empty, awsAccessKey, awsSecretKey, None))) + } else { + logger.warn(s"User validation failed. No sessionToken provided while user is not an NPA " + + s"(username: $userName, accessKey: $awsAccessKey) or account is not enabled") + Future.successful(None) + } - case None if !isNPA => - logger.warn(s"User validation failed. No sessionToken provided while user is not an NPA " + - s"(username: $userName, accessKey: $awsAccessKey)") - Future.successful(None) } case None => @@ -155,10 +158,13 @@ trait UserTokenDbService extends LazyLogging with TokenGeneration { private[this] def getOrGenerateAwsCredentialWithStatus(userName: UserName): Future[(AwsCredential, AccountStatus)] = getAwsCredentialAndStatus(userName) .flatMap { - case (Some(awsCredential), AccountStatus(isEnabled)) if isEnabled => Future.successful((awsCredential, AccountStatus(isEnabled))) - case (Some(awsCredential), AccountStatus(isEnabled)) if !isEnabled => - logger.info(s"User account disabled for ${awsCredential.accessKey}") - Future.successful((awsCredential, AccountStatus(isEnabled))) + case (Some(awsCredential), AccountStatus(isEnabled)) => + if (isEnabled) { + Future.successful((awsCredential, AccountStatus(isEnabled))) + } else { + logger.info(s"User account disabled for ${awsCredential.accessKey}") + Future.successful((awsCredential, AccountStatus(isEnabled))) + } case (None, _) => getNewAwsCredential(userName).map(c => (c, AccountStatus(true))) } diff --git a/src/test/scala/com/ing/wbaa/rokku/sts/api/STSApiTest.scala b/src/test/scala/com/ing/wbaa/rokku/sts/api/STSApiTest.scala index aba3be4..fe40a81 100644 --- a/src/test/scala/com/ing/wbaa/rokku/sts/api/STSApiTest.scala +++ b/src/test/scala/com/ing/wbaa/rokku/sts/api/STSApiTest.scala @@ -135,6 +135,7 @@ class STSApiTest extends AnyWordSpec with Diagrams with ScalatestRouteTest { queries.map(_.substring(1).split("=")) .map { case Array(k, v) => (k, v) + case _ => ("", "") }.toMap } diff --git a/src/test/scala/com/ing/wbaa/rokku/sts/api/UserApiTest.scala b/src/test/scala/com/ing/wbaa/rokku/sts/api/UserApiTest.scala index 06deedd..8bccce1 100644 --- a/src/test/scala/com/ing/wbaa/rokku/sts/api/UserApiTest.scala +++ b/src/test/scala/com/ing/wbaa/rokku/sts/api/UserApiTest.scala @@ -32,23 +32,21 @@ class UserApiTest extends AnyWordSpec override protected[this] def stsSettings: StsSettings = new StsSettings(testSystem.settings.config) }.userRoutes - val bearerToken: String = { + def generateBearerToken(serviceClaimValue: String = "rokku") = { val stsSettings: StsSettings = new StsSettings(testSystem.settings.config) val algorithm = Algorithm.HMAC256(stsSettings.decodeSecret) JWT.create() .withIssuer("rokku") - .withClaim("service", "rokku") + .withClaim("service", serviceClaimValue) .sign(algorithm) } - import com.ing.wbaa.rokku.sts.handler.StsExceptionHandlers.exceptionHandler - "User api" should { "check isCredentialActive" that { "returns user info" in { Get(s"/isCredentialActive?accessKey=accesskey&sessionToken=sessionToken") - .addHeader(RawHeader("Authorization", bearerToken)) ~> testRoute ~> check { + .addHeader(RawHeader("Authorization", generateBearerToken())) ~> testRoute ~> check { assert(status == StatusCodes.OK) val response = responseAs[String] assert(response == """{"accessKey":"a","secretKey":"s","userGroups":["group1","group2"],"userName":"username","userRole":""}""") @@ -63,14 +61,14 @@ class UserApiTest extends AnyWordSpec "check credential and return rejection because the accessKey param is missing" in { Get("/isCredentialActive") - .addHeader(RawHeader("Authorization", bearerToken)) ~> testRoute ~> check { + .addHeader(RawHeader("Authorization", generateBearerToken())) ~> testRoute ~> check { assert(rejection == MissingQueryParamRejection("accessKey")) } } "check credential and return status forbidden because the accessKey is wrong" in { Get(s"/isCredentialActive?accessKey=access&sessionToken=session") - .addHeader(RawHeader("Authorization", bearerToken)) ~> new testUserApi { + .addHeader(RawHeader("Authorization", generateBearerToken())) ~> new testUserApi { override protected[this] def stsSettings: StsSettings = new StsSettings(testSystem.settings.config) override def isCredentialActive(awsAccessKey: AwsAccessKey, awsSessionToken: Option[AwsSessionToken]): Future[Option[STSUserInfo]] = Future.successful(None) @@ -79,9 +77,16 @@ class UserApiTest extends AnyWordSpec } } - "check credential and return status forbidden because the bearerToken is wrong" in { + "check credential and return status bad request because the bearerToken is not a valid JWT" in { Get(s"/isCredentialActive?accessKey=access&sessionToken=session") .addHeader(RawHeader("Authorization", "fakeToken")) ~> testRoute ~> check { + assert(status == StatusCodes.BadRequest) + } + } + + "check credential and return status forbidden because the bearerToken is invalid" in { + Get(s"/isCredentialActive?accessKey=access&sessionToken=session") + .addHeader(RawHeader("Authorization", generateBearerToken("invalid"))) ~> testRoute ~> check { assert(status == StatusCodes.Forbidden) } } From 7fdd1bca74f58eca93d202fb82f1c4659d532eaa Mon Sep 17 00:00:00 2001 From: yannis Date: Thu, 11 Aug 2022 11:36:19 +0200 Subject: [PATCH 2/6] Configured keycloak and fixed integration tests --- build.sbt | 8 +++---- docker-compose.yml | 13 ++++++++++- keycloak/data/kernel/process-uuid | 1 + keycloak/data/keycloak.lock.db | 6 +++++ keycloak/data/keycloak.mv.db | Bin 0 -> 786432 bytes keycloak/data/keycloak.trace.db | 9 +++++++ .../0_ffffc0a87003_7d92f3f6_62f38382_20 | Bin 0 -> 60 bytes project/build.properties | 2 +- .../ing/wbaa/rokku/sts/StsServiceItTest.scala | 22 +++++++++--------- .../sts/keycloak/KeycloakClientItTest.scala | 5 +--- .../keycloak/KeycloakTokenVerifierTest.scala | 21 ++++++++++++----- src/main/resources/reference.conf | 6 ++--- 12 files changed, 63 insertions(+), 30 deletions(-) create mode 100644 keycloak/data/kernel/process-uuid create mode 100644 keycloak/data/keycloak.lock.db create mode 100644 keycloak/data/keycloak.mv.db create mode 100644 keycloak/data/keycloak.trace.db create mode 100644 keycloak/data/tx-object-store/ShadowNoFileLockStore/defaultStore/EISNAME/0_ffffc0a87003_7d92f3f6_62f38382_20 diff --git a/build.sbt b/build.sbt index 2297382..1ce6fbf 100644 --- a/build.sbt +++ b/build.sbt @@ -12,7 +12,7 @@ scalacOptions := Seq( "-unchecked", "-deprecation", "-encoding", "utf-8", - "-target:jvm-1.8", + "-target:11", "-feature", "-Xlint", "-Xfatal-warnings", @@ -25,7 +25,7 @@ assemblyJarName in assembly := "rokku-sts.jar" val akkaVersion = "2.6.19" val akkaHttpVersion = "10.2.9" -val keycloakVersion = "8.0.2" +val keycloakVersion = "16.1.1" val logbackJson = "0.1.5" libraryDependencies ++= Seq( @@ -62,7 +62,7 @@ Defaults.itSettings parallelExecution in IntegrationTest := false javaOptions in Universal ++= Seq( - "-Dlogback.configurationFile=/rokku/logback.xml" + "-Dlogback.configurationFile=/rokku/logback.xml", ) enablePlugins(JavaAppPackaging) @@ -71,7 +71,7 @@ fork := true dockerExposedPorts := Seq(12345) dockerCommands += ExecCmd("ENV", "PROXY_HOST", "0.0.0.0") -dockerBaseImage := "openjdk:8u171-jre-slim-stretch" +dockerBaseImage := "openjdk:8u171-jre-slim-buster" dockerAlias := docker.DockerAlias(Some("docker.io"), Some("wbaa"), "rokku-sts", Some(rokkuStsVersion)) scalariformPreferences := scalariformPreferences.value diff --git a/docker-compose.yml b/docker-compose.yml index 3ceb407..c1ffff2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,14 +2,25 @@ version: "2" services: keycloak: - image: wbaa/rokku-dev-keycloak:0.0.9 + image: jboss/keycloak:16.1.1 environment: - KEYCLOAK_USER=admin - KEYCLOAK_PASSWORD=admin - DB_VENDOR=h2 + volumes: + - ./keycloak/data:/opt/jboss/keycloak/standalone/data ports: - 8080:8080 + nool: + image: wbaa/rokku-dev-keycloak:0.0.9 + environment: + - KEYCLOAK_USER=admin + - KEYCLOAK_PASSWORD=admin + - DB_VENDOR=h2 + ports: + - 8081:8080 + mariadb: image: wbaa/rokku-dev-mariadb:0.0.8 environment: diff --git a/keycloak/data/kernel/process-uuid b/keycloak/data/kernel/process-uuid new file mode 100644 index 0000000..6ba51bb --- /dev/null +++ b/keycloak/data/kernel/process-uuid @@ -0,0 +1 @@ +6895c06c-d735-46a1-90d7-c0c2c1ac0f80 diff --git a/keycloak/data/keycloak.lock.db b/keycloak/data/keycloak.lock.db new file mode 100644 index 0000000..afe0090 --- /dev/null +++ b/keycloak/data/keycloak.lock.db @@ -0,0 +1,6 @@ +#FileLock +#Fri Aug 12 09:55:34 GMT 2022 +server=172.26.0.3\:40845 +hostName=d0d26d21a3d6 +method=file +id=182917b0236589229c0cb40987878a043daa48ed417 diff --git a/keycloak/data/keycloak.mv.db b/keycloak/data/keycloak.mv.db new file mode 100644 index 0000000000000000000000000000000000000000..1957cf2f010a41bfffa915469e0ac093913b6a49 GIT binary patch literal 786432 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 z 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 literal 0 HcmV?d00001 diff --git a/keycloak/data/keycloak.trace.db b/keycloak/data/keycloak.trace.db new file mode 100644 index 0000000..88d690f --- /dev/null +++ b/keycloak/data/keycloak.trace.db @@ -0,0 +1,9 @@ +2022-08-10 10:08:21 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Table "DATABASECHANGELOGLOCK" not found; SQL statement: +select count(*) from PUBLIC.DATABASECHANGELOGLOCK [42102-197] +2022-08-10 10:08:25 jdbc[4]: exception +org.h2.jdbc.JdbcSQLException: Table "DATABASECHANGELOG" not found; SQL statement: +select count(*) from PUBLIC.DATABASECHANGELOG [42102-197] +2022-08-10 10:08:29 jdbc[4]: exception +org.h2.jdbc.JdbcSQLException: Table "DATABASECHANGELOG" not found; SQL statement: +select count(*) from PUBLIC.DATABASECHANGELOG [42102-197] diff --git a/keycloak/data/tx-object-store/ShadowNoFileLockStore/defaultStore/EISNAME/0_ffffc0a87003_7d92f3f6_62f38382_20 b/keycloak/data/tx-object-store/ShadowNoFileLockStore/defaultStore/EISNAME/0_ffffc0a87003_7d92f3f6_62f38382_20 new file mode 100644 index 0000000000000000000000000000000000000000..9b67a851543cb0be12525120faaf86539009486e GIT binary patch literal 60 zcmY#(a%B`ya9{ueCPNU(z`zK^N?D0ziB?%j`NhThDTyVC#rdU0$*INq-l>(zIr)j% IF2O)W08dm7H2?qr literal 0 HcmV?d00001 diff --git a/project/build.properties b/project/build.properties index 2ec6cd9..d738b85 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version = 1.4.0 +sbt.version = 1.7.1 diff --git a/src/it/scala/com/ing/wbaa/rokku/sts/StsServiceItTest.scala b/src/it/scala/com/ing/wbaa/rokku/sts/StsServiceItTest.scala index 58ef2de..a0e9978 100644 --- a/src/it/scala/com/ing/wbaa/rokku/sts/StsServiceItTest.scala +++ b/src/it/scala/com/ing/wbaa/rokku/sts/StsServiceItTest.scala @@ -28,7 +28,14 @@ class StsServiceItTest extends AsyncWordSpec with Diagrams override implicit val testSystem: ActorSystem = ActorSystem.create("test-system") override implicit val exContext: ExecutionContextExecutor = testSystem.dispatcher - private val validCredentials = Map("grant_type" -> "password", "username" -> "userone", "password" -> "password", "client_id" -> "sts-rokku") + val keycloakSettings: KeycloakSettings = new KeycloakSettings(testSystem.settings.config) + private val validCredentials = Map( + "grant_type" -> "password", + "username" -> "userone", + "password" -> "password", + "client_id" -> keycloakSettings.resource, + "client_secret" -> keycloakSettings.clientSecret, + ) private val invalidCredentials = validCredentials + ("password" -> "xxx") private val validAdminArn = "arn:aws:iam::account-id:role/admin" private val forbiddenSuperUserArn = "arn:aws:iam:account-id:role/superuser" @@ -38,10 +45,6 @@ class StsServiceItTest extends AsyncWordSpec with Diagrams override val httpBind: String = "127.0.0.1" } - override val keycloakSettings: KeycloakSettings = new KeycloakSettings(testSystem.settings.config) { - override val realmPublicKeyId: String = "FJ86GcF3jTbNLOco4NvZkUCIUmfYCqoqtOQeMfbhNlE" - } - def withOAuth2TokenRequest(formData: Map[String, String])(testCode: KeycloackToken => Assertion): Future[Assertion] = { keycloackToken(formData).map(testCode(_)) } @@ -59,10 +62,7 @@ class StsServiceItTest extends AsyncWordSpec with Diagrams override protected[this] def httpSettings: HttpSettings = rokkuHttpSettings - override protected[this] def keycloakSettings: KeycloakSettings = new KeycloakSettings(testSystem.settings.config) { - override val realmPublicKeyId: String = "FJ86GcF3jTbNLOco4NvZkUCIUmfYCqoqtOQeMfbhNlE" - override val issuerForList: Set[String] = Set("sts-rokku") - } + val keycloakSettings: KeycloakSettings = new KeycloakSettings(testSystem.settings.config) override protected[this] def stsSettings: StsSettings = StsSettings(testSystem) @@ -101,8 +101,8 @@ class StsServiceItTest extends AsyncWordSpec with Diagrams "return credentials for valid token" in withAwsClient { stsAwsClient => withOAuth2TokenRequest(validCredentials) { keycloakToken => val credentials = stsAwsClient.getSessionToken(new GetSessionTokenRequest() - .withTokenCode(keycloakToken.access_token)) - .getCredentials + .withTokenCode(keycloakToken.access_token)) + .getCredentials assert(!credentials.getAccessKeyId.isEmpty) assert(!credentials.getSecretAccessKey.isEmpty) diff --git a/src/it/scala/com/ing/wbaa/rokku/sts/keycloak/KeycloakClientItTest.scala b/src/it/scala/com/ing/wbaa/rokku/sts/keycloak/KeycloakClientItTest.scala index ae20683..28f3647 100644 --- a/src/it/scala/com/ing/wbaa/rokku/sts/keycloak/KeycloakClientItTest.scala +++ b/src/it/scala/com/ing/wbaa/rokku/sts/keycloak/KeycloakClientItTest.scala @@ -15,10 +15,7 @@ class KeycloakClientItTest extends AsyncWordSpec with Diagrams with OAuth2TokenR override implicit val testSystem: ActorSystem = ActorSystem.create("test-system") override implicit val exContext: ExecutionContextExecutor = testSystem.dispatcher - override val keycloakSettings: KeycloakSettings = new KeycloakSettings(testSystem.settings.config) { - override val realmPublicKeyId: String = "FJ86GcF3jTbNLOco4NvZkUCIUmfYCqoqtOQeMfbhNlE" - override val issuerForList: Set[String] = Set("sts-rokku") - } + val keycloakSettings: KeycloakSettings = new KeycloakSettings(testSystem.settings.config) "Keycloak client" should { val username = "test" diff --git a/src/it/scala/com/ing/wbaa/rokku/sts/keycloak/KeycloakTokenVerifierTest.scala b/src/it/scala/com/ing/wbaa/rokku/sts/keycloak/KeycloakTokenVerifierTest.scala index 5c6a33e..3607df1 100644 --- a/src/it/scala/com/ing/wbaa/rokku/sts/keycloak/KeycloakTokenVerifierTest.scala +++ b/src/it/scala/com/ing/wbaa/rokku/sts/keycloak/KeycloakTokenVerifierTest.scala @@ -17,17 +17,26 @@ class KeycloakTokenVerifierTest extends AsyncWordSpec with Diagrams with OAuth2T override implicit val testSystem: ActorSystem = ActorSystem.create("test-system") override implicit val exContext: ExecutionContextExecutor = testSystem.dispatcher - override val keycloakSettings: KeycloakSettings = new KeycloakSettings(testSystem.settings.config) { - override val realmPublicKeyId: String = "FJ86GcF3jTbNLOco4NvZkUCIUmfYCqoqtOQeMfbhNlE" - override val issuerForList: Set[String] = Set("sts-rokku") - } + val keycloakSettings: KeycloakSettings = new KeycloakSettings(testSystem.settings.config) private def withOAuth2TokenRequest(formData: Map[String, String])(testCode: KeycloackToken => Assertion): Future[Assertion] = { keycloackToken(formData).map(testCode) } - private val validCredentialsUser1 = Map("grant_type" -> "password", "username" -> "userone", "password" -> "password", "client_id" -> "sts-rokku") - private val validCredentialsUser2 = Map("grant_type" -> "password", "username" -> "testuser", "password" -> "password", "client_id" -> "sts-rokku") + private val validCredentialsUser1 = Map( + "grant_type" -> "password", + "username" -> "userone", + "password" -> "password", + "client_id" -> keycloakSettings.resource, + "client_secret" -> keycloakSettings.clientSecret, + ) + private val validCredentialsUser2 = Map( + "grant_type" -> "password", + "username" -> "testuser", + "password" -> "password", + "client_id" -> keycloakSettings.resource, + "client_secret" -> keycloakSettings.clientSecret, + ) "Keycloak verifier" should { "return verified token for user 1" in withOAuth2TokenRequest(validCredentialsUser1) { keycloakToken => diff --git a/src/main/resources/reference.conf b/src/main/resources/reference.conf index 00f6920..b91914c 100644 --- a/src/main/resources/reference.conf +++ b/src/main/resources/reference.conf @@ -7,16 +7,16 @@ rokku { } # Default keycloak configuration file and realm public key id keycloak { - realmPublicKeyId = "FJ86GcF3jTbNLOco4NvZkUCIUmfYCqoqtOQeMfbhNlE" + realmPublicKeyId = "71Fo4peRHRc7XjPQMEMWFne3F_Hug3O-NT9bMP9YoQg" realm = "auth-rokku" resource = "sts-rokku" url = "http://127.0.0.1:8080" - clientSecret = "" + clientSecret = "q4dHVTDyViys4T0njCSSoS5Xto4GjA12" adminUsername = "rokkuadmin" adminPassword = "password" verifyToken { checkRealmUrl = true - issuerForList = "" + issuerForList = "sts-rokku" } } From d239b23954ff5b2a39e138f7bf9c5f49afb7f814 Mon Sep 17 00:00:00 2001 From: yannis Date: Fri, 12 Aug 2022 13:08:36 +0200 Subject: [PATCH 3/6] Improved local keycloak dev setup by building/copying the h2 db inside the image in order to avoid dirty git state --- docker-compose.yml | 13 +------------ keycloak/Dockerfile | 5 +++++ 2 files changed, 6 insertions(+), 12 deletions(-) create mode 100644 keycloak/Dockerfile diff --git a/docker-compose.yml b/docker-compose.yml index c1ffff2..536714e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,25 +2,14 @@ version: "2" services: keycloak: - image: jboss/keycloak:16.1.1 + build: ./keycloak environment: - KEYCLOAK_USER=admin - KEYCLOAK_PASSWORD=admin - DB_VENDOR=h2 - volumes: - - ./keycloak/data:/opt/jboss/keycloak/standalone/data ports: - 8080:8080 - nool: - image: wbaa/rokku-dev-keycloak:0.0.9 - environment: - - KEYCLOAK_USER=admin - - KEYCLOAK_PASSWORD=admin - - DB_VENDOR=h2 - ports: - - 8081:8080 - mariadb: image: wbaa/rokku-dev-mariadb:0.0.8 environment: diff --git a/keycloak/Dockerfile b/keycloak/Dockerfile new file mode 100644 index 0000000..25866fb --- /dev/null +++ b/keycloak/Dockerfile @@ -0,0 +1,5 @@ +FROM jboss/keycloak:16.1.1 + + +COPY data /opt/jboss/keycloak/standalone/data +USER root \ No newline at end of file From cde1cad60bfe3deb791577d15dfd8b1b658f2ea7 Mon Sep 17 00:00:00 2001 From: yannis Date: Fri, 12 Aug 2022 13:09:47 +0200 Subject: [PATCH 4/6] Cleaned up code --- src/main/scala/com/ing/wbaa/rokku/sts/api/STSApi.scala | 1 - src/main/scala/com/ing/wbaa/rokku/sts/api/UserApi.scala | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/api/STSApi.scala b/src/main/scala/com/ing/wbaa/rokku/sts/api/STSApi.scala index ac22079..49567e2 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/api/STSApi.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/api/STSApi.scala @@ -33,7 +33,6 @@ trait STSApi extends LazyLogging with TokenXML { } private val assumeRoleInputs = { - // val inputList = ("RoleArn", "RoleSessionName", "DurationSeconds".as[Int].?) (parameters("RoleArn", "RoleSessionName", "DurationSeconds".as[Int].?) | formFields("RoleArn", "RoleSessionName", "DurationSeconds".as[Int].?)).tmap(t => t.copy(_1 = AwsRoleArn(t._1), _3 = parseDurationSeconds(t._3)) ) diff --git a/src/main/scala/com/ing/wbaa/rokku/sts/api/UserApi.scala b/src/main/scala/com/ing/wbaa/rokku/sts/api/UserApi.scala index cf0892e..0ad5d7b 100644 --- a/src/main/scala/com/ing/wbaa/rokku/sts/api/UserApi.scala +++ b/src/main/scala/com/ing/wbaa/rokku/sts/api/UserApi.scala @@ -36,9 +36,8 @@ trait UserApi extends JwtToken { case None => RequestId("") } - var isBearerTokenValid = false try { - isBearerTokenValid = verifyInternalToken(bearerToken) + val isBearerTokenValid = verifyInternalToken(bearerToken) if (isBearerTokenValid) { parameters("accessKey", "sessionToken".?) { (accessKey, sessionToken) => onSuccess(isCredentialActive(AwsAccessKey(accessKey), sessionToken.map(AwsSessionToken))) { From 2d692bb445efa1091f2c4a78ed26979ef4bc9074 Mon Sep 17 00:00:00 2001 From: yannis Date: Thu, 18 Aug 2022 11:58:45 +0200 Subject: [PATCH 5/6] Added missing client_secret argument in scripts --- scripts/rokku-assume-role.sh | 2 +- scripts/rokku-get-session-token.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/rokku-assume-role.sh b/scripts/rokku-assume-role.sh index c0920ce..8ee79cf 100644 --- a/scripts/rokku-assume-role.sh +++ b/scripts/rokku-assume-role.sh @@ -1,4 +1,4 @@ -token_session=$(curl -s -X POST http://localhost:8080/auth/realms/auth-rokku/protocol/openid-connect/token -H "Content-Type: application/x-www-form-urlencoded" -d "username=userone" -d "password=password" -d 'grant_type=password' -d 'client_id=sts-rokku' | jq -r '.access_token') +token_session=$(curl -s -X POST http://localhost:8080/auth/realms/auth-rokku/protocol/openid-connect/token -H "Content-Type: application/x-www-form-urlencoded" -d "username=userone" -d "password=password" -d 'grant_type=password' -d 'client_id=sts-rokku' -d 'client_secret=q4dHVTDyViys4T0njCSSoS5Xto4GjA12' | jq -r '.access_token') echo "Read keycloak token: $token_session" if [ ${#token_session} -gt 10 ] then diff --git a/scripts/rokku-get-session-token.sh b/scripts/rokku-get-session-token.sh index a155d44..35c8ba2 100644 --- a/scripts/rokku-get-session-token.sh +++ b/scripts/rokku-get-session-token.sh @@ -1,4 +1,4 @@ -token_session=$(curl -s -X POST http://localhost:8080/auth/realms/auth-rokku/protocol/openid-connect/token -H "Content-Type: application/x-www-form-urlencoded" -d "username=testuser" -d "password=password" -d 'grant_type=password' -d 'client_id=sts-rokku' | jq -r '.access_token') +token_session=$(curl -s -X POST http://localhost:8080/auth/realms/auth-rokku/protocol/openid-connect/token -H "Content-Type: application/x-www-form-urlencoded" -d "username=testuser" -d "password=password" -d 'grant_type=password' -d 'client_id=sts-rokku' -d 'client_secret=q4dHVTDyViys4T0njCSSoS5Xto4GjA12' | jq -r '.access_token') echo "Read keycloak token: $token_session" if [ ${#token_session} -gt 10 ] then From 916b63751e02c762c6b045b77dfa8ac076166db1 Mon Sep 17 00:00:00 2001 From: yannis Date: Thu, 18 Aug 2022 14:02:25 +0200 Subject: [PATCH 6/6] removed travis build file --- .travis.yml | 41 ----------------------------------------- 1 file changed, 41 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9911d8d..0000000 --- a/.travis.yml +++ /dev/null @@ -1,41 +0,0 @@ -sudo: required - -services: -- docker - -language: scala - -scala: -- 2.13.1 - -env: - global: - - DOCKER_REPO: wbaa/rokku-sts - - secure: 4Lp+bz7To+oBWw7T/y9XRb46opqxp9NvtDcT0OYGvnkbuMhLLzL5E9P9VhM0PujjB12dmm2zLP8tB1rHVsn7g1LzSILjiES7q53C5bt9wcwF0e7T885+cas4cwgHz8IoLewgG0TOwnZIsyAAwgSQMWbqU3neF7MApdiSQNQ2BI/NW/UO51MJ9RP3Qld0HzbJEZA6x0r5YGQN4JPLcoz9SI9VWIAmMz2ciy4kRgVpOBnWkWPLyOLXcRdcMyfjHBm4iLi4yazigN/G7erU21NFPbHgxEZwj8c4MuSKWuwbmTFAEaT3LkGnstZ8sYdLgF/d3a0z8U7v7Ul955sVM4iJRciUKUJpFgqrMDET7zC7jGihJc2tL2qFQoHiKN9LFv88wRDyprxDK13A9BptdO9fr401qI/PngXJNNfgeo083yZE+zK91oqtLBK9AHboCiSKnl30qKWUOczlpeoUMl5eZyv4IV8xK7YG9KOGkx4kglh00VZ815p9GpubwZ2PhbUWX6zFs3qMjmUgwQnmtLoZTKqUxoyu+OemTJw24wYp58NU5tHM85kQS0SLwP1zUTa5GLm8rxdd7+iPHF2Jr2TDs2eS1C6JtQoTL/l80rI1Kfu8tlndGEZg0xh8BegaQ6gKIYGXcZb9y32yBDkH1snA+pmh/4QnaZogyyuhykx2adA= - - secure: NfG4oBVLO+f8cUw9fLmIPDpK1Y1i9Y6iGAzE0Ug6YzCKw6WeVqrUrTYfDoXfRDIXoRSJ8tSufoLql1+qBix9LWRb41p+O1rb5v+IdBqZI6D3f0Y2r8uFjs0HvkVwDDTAiUNPueRPcdH8CK0xaTBTu0ITxB9PyaoPTAoL1RjxrN2DGg75jwFJ89ViuE8f5zPXvD7eoa2bmNMqhquDXv/QR56zdK+m3sKEV7SeIbeKIekiwP/bqcTZ/Jon/PxVntfET04nneaXLbMICoyszHRv2zxg2YEpf15OlT8b0JT/9Gs7xLD5gDJ+P2geuN5rJKiRgIl+yzeTL3SN0HT6kAO2JkqSjLjWLFeul33ax39nukv8+Hx+SLOh0qD0UTLWsM9EdyKQqi56MNzJPJt3PUElVeD1Bdl/26IpLO70btleyHBPXXjtxPQArYSmPwNy0uC+E7kqquKrnvVsQ+lAE9VgznEUHqj5mmUIl9XO2eHq2F5wls7ter9nagM0VyrDnQFmZBt6KO3BfnOCAnIm9wMIWy2kak+BIkJ6lJjL+PHraK0hIFGLGY+bx/OyRGQNHeRsAWjEV1QAjJ1lWmHjgumahK7d+D5LLcicUto36BQ6G8BH4ZgMODxhE0T8mB7nEMLDMkNJnsXIsbi1kiOaSXZVrdMn2Gs9iFU9dQFS2mdoyO0= - -before_script: -- echo "Running pipeline for branch ${TRAVIS_BRANCH}" -- echo "Starting dependent containers for testing" -- docker-compose up -d -- echo "Compile the project while containers are starting up" -- sbt ++$TRAVIS_SCALA_VERSION clean compile -- echo "Wait for containers to be up and running" -- bash waitForContainerSetup.sh - -script: -- echo "Running pipeline for branch ${TRAVIS_BRANCH}" -- sbt ++$TRAVIS_SCALA_VERSION clean coverage test it:test coverageReport - -after_success: -- bash <(curl -s https://codecov.io/bash) -- export ROKKU_STS_VERSION="${TRAVIS_BRANCH/\//_}" -- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin -- if [ "${TRAVIS_BRANCH}" != "master" ]; then - echo "Build image for with name $DOCKER_REPO:$ROKKU_STS_VERSION"; - sbt clean docker:publish; - fi -- if [ -n "$TRAVIS_TAG" ]; then - docker tag $DOCKER_REPO:$ROKKU_STS_VERSION $DOCKER_REPO:latest; - docker push $DOCKER_REPO:latest; - fi