1
1
package com.vauthenticator.server.config
2
2
3
3
import com.vauthenticator.server.keys.adapter.dynamo.DynamoDbKeyStorage
4
+ import com.vauthenticator.server.keys.adapter.jdbc.JdbcKeyStorage
4
5
import com.vauthenticator.server.keys.adapter.kms.KmsKeyDecrypter
5
6
import com.vauthenticator.server.keys.adapter.kms.KmsKeyGenerator
6
- import com.vauthenticator.server.keys.domain.KeyDecrypter
7
- import com.vauthenticator.server.keys.domain.KeyGenerator
8
- import com.vauthenticator.server.keys.domain.KeyRepository
9
- import com.vauthenticator.server.keys.domain.SignatureKeyRotation
7
+ import com.vauthenticator.server.keys.domain.*
10
8
import org.springframework.beans.factory.annotation.Value
11
9
import org.springframework.context.annotation.Bean
12
10
import org.springframework.context.annotation.Configuration
11
+ import org.springframework.context.annotation.Profile
12
+ import org.springframework.jdbc.core.JdbcTemplate
13
13
import software.amazon.awssdk.services.dynamodb.DynamoDbClient
14
14
import software.amazon.awssdk.services.kms.KmsClient
15
15
import java.time.Clock
@@ -24,27 +24,31 @@ class KeyConfig {
24
24
@Bean
25
25
fun keyDecrypter (kmsClient : KmsClient ): KeyDecrypter = KmsKeyDecrypter (kmsClient)
26
26
27
- @Bean
28
- fun keyRepository (
27
+ @Bean(" keyStorage" )
28
+ @Profile(" !experimental_database_persistence" )
29
+ fun dynamoDbKeyStorage (
29
30
clock : Clock ,
30
- keyGenerator : KeyGenerator ,
31
- keyDecrypter : KeyDecrypter ,
32
31
dynamoDbClient : DynamoDbClient ,
33
32
@Value(" \$ {vauthenticator.dynamo-db.keys.signature.table-name}" ) signatureTableName : String ,
34
33
@Value(" \$ {vauthenticator.dynamo-db.keys.mfa.table-name}" ) mfaTableName : String
34
+ ) = DynamoDbKeyStorage (clock, dynamoDbClient, signatureTableName, mfaTableName)
35
+
36
+ @Bean(" keyStorage" )
37
+ @Profile(" experimental_database_persistence" )
38
+ fun jdbcKeyStorage (jdbcTemplate : JdbcTemplate , clock : Clock ) = JdbcKeyStorage (jdbcTemplate, clock)
39
+
40
+ @Bean(" keyRepository" )
41
+ fun keyRepository (
42
+ keyGenerator : KeyGenerator ,
43
+ keyDecrypter : KeyDecrypter ,
44
+ keyStorage : KeyStorage
35
45
): KeyRepository =
36
46
KeyRepository (
37
47
{ UUID .randomUUID().toString() },
38
- DynamoDbKeyStorage (
39
- clock,
40
- dynamoDbClient,
41
- signatureTableName,
42
- mfaTableName,
43
- ),
48
+ keyStorage,
44
49
keyGenerator,
45
50
)
46
51
47
-
48
52
@Bean
49
53
fun signatureKeyRotation (keyRepository : KeyRepository ) = SignatureKeyRotation (keyRepository)
50
54
}
0 commit comments