Skip to content

Commit 293027e

Browse files
Don't set expiration on auth tokens (#3105)
To make sure that #3096 has the desired effect. [ci] Signed-off-by: Martin Florian <martin.florian@digitalasset.com>
1 parent 7834648 commit 293027e

File tree

5 files changed

+12
-27
lines changed

5 files changed

+12
-27
lines changed

apps/app/src/main/scala/org/lfdecentralizedtrust/splice/config/ConfigTransforms.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,6 @@ object ConfigTransforms {
803803
val userToken = AuthUtil.LedgerApi.testToken(
804804
user = user,
805805
secret = secret,
806-
expiration = NonNegativeFiniteDuration.ofDays(30),
807806
)
808807
c.copy(
809808
authConfig = AuthTokenSourceConfig.Static(

apps/app/src/test/scala/org/lfdecentralizedtrust/splice/integration/tests/SpliceTests.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -314,13 +314,13 @@ object SpliceTests extends LazyLogging {
314314
newUser: String,
315315
): AuthTokenSourceConfig = {
316316
conf match {
317-
case AuthTokenSourceConfig.Static(_, adminToken, expiration) => {
317+
case AuthTokenSourceConfig.Static(_, adminToken) => {
318318
val secret = "test" // used for all of our tests
319-
val userToken = AuthUtil.LedgerApi.testToken(newUser, secret, expiration)
319+
val userToken = AuthUtil.LedgerApi.testToken(newUser, secret)
320320
AuthTokenSourceConfig.Static(userToken, adminToken)
321321
}
322-
case AuthTokenSourceConfig.SelfSigned(audience, _, secret, adminToken, expiration) => {
323-
AuthTokenSourceConfig.SelfSigned(audience, newUser, secret, adminToken, expiration)
322+
case AuthTokenSourceConfig.SelfSigned(audience, _, secret, adminToken) => {
323+
AuthTokenSourceConfig.SelfSigned(audience, newUser, secret, adminToken)
324324
}
325325
case _ => conf
326326
}

apps/common/src/main/scala/org/lfdecentralizedtrust/splice/auth/AuthTokenSource.scala

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.daml.jwt.{AuthServiceJWTCodec, Jwt, JwtDecoder, StandardJWTPayload}
77
import org.apache.pekko.actor.ActorSystem
88
import org.lfdecentralizedtrust.splice.auth.OAuthApi.TokenResponse
99
import org.lfdecentralizedtrust.splice.config.AuthTokenSourceConfig
10-
import com.digitalasset.canton.config.NonNegativeFiniteDuration
1110
import com.digitalasset.canton.data.CantonTimestamp
1211
import com.digitalasset.canton.logging.{NamedLoggerFactory, NamedLogging}
1312
import com.digitalasset.canton.tracing.TraceContext
@@ -74,11 +73,10 @@ case class AuthTokenSourceSelfSigned(
7473
audience: String,
7574
user: String,
7675
secret: String,
77-
expiration: NonNegativeFiniteDuration,
7876
) extends AuthTokenSource {
7977
override def getToken(implicit tc: TraceContext): Future[Option[AuthToken]] =
8078
Future.successful(
81-
Some(AuthToken(AuthUtil.testTokenSecret(audience, user, secret, expiration)))
79+
Some(AuthToken(AuthUtil.testTokenSecret(audience, user, secret)))
8280
)
8381
}
8482

@@ -117,10 +115,10 @@ object AuthTokenSource {
117115
)(implicit ec: ExecutionContext, ac: ActorSystem): AuthTokenSource = config match {
118116
case AuthTokenSourceConfig.None() =>
119117
new AuthTokenSourceNone()
120-
case AuthTokenSourceConfig.Static(token, _, _) =>
118+
case AuthTokenSourceConfig.Static(token, _) =>
121119
new AuthTokenSourceStatic(token)
122-
case AuthTokenSourceConfig.SelfSigned(audience, user, secret, _, expiration) =>
123-
new AuthTokenSourceSelfSigned(audience, user, secret, expiration)
120+
case AuthTokenSourceConfig.SelfSigned(audience, user, secret, _) =>
121+
new AuthTokenSourceSelfSigned(audience, user, secret)
124122
case AuthTokenSourceConfig.ClientCredentials(
125123
wellKnownConfigUrl,
126124
clientId,

apps/common/src/main/scala/org/lfdecentralizedtrust/splice/auth/AuthUtil.scala

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package org.lfdecentralizedtrust.splice.auth
55

66
import com.auth0.jwt.JWT
77
import com.auth0.jwt.algorithms.Algorithm
8-
import com.digitalasset.canton.config.NonNegativeFiniteDuration
98

109
// See also: com.daml.ledger.api.auth.Main from the Daml SDK contains utils for generating ledger API access tokens
1110
object AuthUtil {
@@ -29,23 +28,19 @@ object AuthUtil {
2928
audience: String,
3029
user: String,
3130
secret: String,
32-
expiration: NonNegativeFiniteDuration = NonNegativeFiniteDuration.ofDays(30),
3331
): String = {
34-
testTokenSecret(audience, user, secret, expiration)
32+
testTokenSecret(audience, user, secret)
3533
}
3634

3735
def testTokenSecret(
3836
audience: String,
3937
user: String,
4038
secret: String,
41-
expiration: NonNegativeFiniteDuration,
4239
): String = {
4340
JWT
4441
.create()
4542
.withSubject(user)
4643
.withAudience(audience)
47-
// Canton also uses Instant.now for the checks even in simtime so this is ok.
48-
.withExpiresAt(java.time.Instant.now().plus(expiration.asJava))
4944
.sign(Algorithm.HMAC256(secret))
5045
}
5146

@@ -61,15 +56,12 @@ object AuthUtil {
6156
def testToken(
6257
user: String,
6358
secret: String,
64-
expiration: NonNegativeFiniteDuration,
6559
): String = {
6660
JWT
6761
.create()
6862
.withSubject(user)
6963
.withClaim("scope", "daml_ledger_api")
7064
.withAudience(testAudience)
71-
// Canton also uses Instant.now for the checks even in simtime so this is ok.
72-
.withExpiresAt(java.time.Instant.now().plus(expiration.asJava))
7365
.sign(Algorithm.HMAC256(secret))
7466
}
7567
}

apps/common/src/main/scala/org/lfdecentralizedtrust/splice/config/AuthTokenSourceConfig.scala

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33

44
package org.lfdecentralizedtrust.splice.config
55

6-
import com.digitalasset.canton.config.NonNegativeFiniteDuration
7-
86
sealed trait AuthTokenSourceConfig {
97
// Token that will be used for all commands that need to bypass ledger API auth.
108
// Due to the way Canton console is designed, this need to be a static token.
@@ -20,7 +18,6 @@ object AuthTokenSourceConfig {
2018
final case class Static(
2119
token: String,
2220
adminToken: Option[String],
23-
expiration: NonNegativeFiniteDuration = NonNegativeFiniteDuration.ofDays(30),
2421
) extends AuthTokenSourceConfig
2522

2623
/** Settings for generating self-signed tokens. Use for testing purposes only. */
@@ -29,7 +26,6 @@ object AuthTokenSourceConfig {
2926
user: String,
3027
secret: String,
3128
adminToken: Option[String],
32-
expiration: NonNegativeFiniteDuration = NonNegativeFiniteDuration.ofDays(30),
3329
) extends AuthTokenSourceConfig
3430

3531
/** Using OAuth client credentials flow to acquire tokens */
@@ -48,9 +44,9 @@ object AuthTokenSourceConfig {
4844
val hide = (t: Option[String]) => t.map(_ => hidden)
4945
config match {
5046
case None() => None()
51-
case Static(_, adminToken, expiration) => Static(hidden, hide(adminToken), expiration)
52-
case SelfSigned(audience, user, _, adminToken, expiration) =>
53-
SelfSigned(audience, user, hidden, hide(adminToken), expiration)
47+
case Static(_, adminToken) => Static(hidden, hide(adminToken))
48+
case SelfSigned(audience, user, _, adminToken) =>
49+
SelfSigned(audience, user, hidden, hide(adminToken))
5450
case ClientCredentials(wellKnownConfigUrl, clientId, _, audience, scope, adminToken) =>
5551
ClientCredentials(wellKnownConfigUrl, clientId, hidden, audience, scope, hide(adminToken))
5652
}

0 commit comments

Comments
 (0)