Skip to content

Commit 54a1a4a

Browse files
authored
feat: add provider_id attribute to keycloak_realm_keystore_rsa resource (#858)
1 parent c818211 commit 54a1a4a

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

docs/resources/realm_keystore_rsa.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ resource "keycloak_realm_keystore_rsa" "keystore_rsa" {
2828
priority = 100
2929
algorithm = "RS256"
3030
keystore_size = 2048
31+
provider_id = "rsa"
3132
}
3233
```
3334

@@ -40,8 +41,9 @@ resource "keycloak_realm_keystore_rsa" "keystore_rsa" {
4041
- `enabled` - (Optional) When `false`, key is not accessible in this realm. Defaults to `true`.
4142
- `active` - (Optional) When `false`, key in not used for signing. Defaults to `true`.
4243
- `priority` - (Optional) Priority for the provider. Defaults to `0`
43-
- `algorithm` - (Optional) Intended algorithm for the key. Defaults to `RS256`
44+
- `algorithm` - (Optional) Intended algorithm for the key. Defaults to `RS256`. Use `RSA-OAEP` for encryption keys
4445
- `keystore_size` - (Optional) Size for the generated keys. Defaults to `2048`.
46+
- `provider_id` - (Optional) Use `rsa` for signing keys, `rsa-enc` for encryption keys
4547

4648
## Import
4749

keycloak/realm_keystore_rsa.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ type RealmKeystoreRsa struct {
1818

1919
PrivateKey string
2020
Certificate string
21+
ProviderId string
2122
}
2223

2324
func convertFromRealmKeystoreRsaToComponent(realmKey *RealmKeystoreRsa) *component {
@@ -46,7 +47,7 @@ func convertFromRealmKeystoreRsaToComponent(realmKey *RealmKeystoreRsa) *compone
4647
Id: realmKey.Id,
4748
Name: realmKey.Name,
4849
ParentId: realmKey.RealmId,
49-
ProviderId: "rsa",
50+
ProviderId: realmKey.ProviderId,
5051
ProviderType: "org.keycloak.keys.KeyProvider",
5152
Config: componentConfig,
5253
}
@@ -82,6 +83,7 @@ func convertFromComponentToRealmKeystoreRsa(component *component, realmId string
8283
Algorithm: component.getConfig("algorithm"),
8384
PrivateKey: component.getConfig("privateKey"),
8485
Certificate: component.getConfig("certificate"),
86+
ProviderId: component.ProviderId,
8587
}
8688

8789
return realmKey, nil

provider/resource_keycloak_realm_keystore_rsa.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
)
1010

1111
var (
12-
keycloakRealmKeystoreRsaAlgorithm = []string{"RS256", "RS384", "RS512", "PS256", "PS384", "PS512"}
12+
keycloakRealmKeystoreRsaAlgorithm = []string{"RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "RSA-OAEP"}
1313
)
1414

1515
func resourceKeycloakRealmKeystoreRsa() *schema.Resource {
@@ -67,6 +67,13 @@ func resourceKeycloakRealmKeystoreRsa() *schema.Resource {
6767
Required: true,
6868
Description: "X509 Certificate encoded in PEM format",
6969
},
70+
"provider_id": {
71+
Type: schema.TypeString,
72+
Optional: true,
73+
Default: "rsa",
74+
Description: "RSA key provider id",
75+
ForceNew: true,
76+
},
7077
},
7178
}
7279
}
@@ -83,6 +90,7 @@ func getRealmKeystoreRsaFromData(data *schema.ResourceData) *keycloak.RealmKeyst
8390
Algorithm: data.Get("algorithm").(string),
8491
PrivateKey: data.Get("private_key").(string),
8592
Certificate: data.Get("certificate").(string),
93+
ProviderId: data.Get("provider_id").(string),
8694
}
8795

8896
return mapper
@@ -98,6 +106,7 @@ func setRealmKeystoreRsaData(data *schema.ResourceData, realmKey *keycloak.Realm
98106
data.Set("enabled", realmKey.Enabled)
99107
data.Set("priority", realmKey.Priority)
100108
data.Set("algorithm", realmKey.Algorithm)
109+
data.Set("provider_id", realmKey.ProviderId)
101110
if realmKey.PrivateKey != "**********" {
102111
data.Set("private_key", realmKey.PrivateKey)
103112
data.Set("certificate", realmKey.Certificate)

0 commit comments

Comments
 (0)