Skip to content

Commit 05b5f84

Browse files
authored
jwk: add use parameter to generated JWKs - closes #279 (#280)
1 parent e33df89 commit 05b5f84

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

cmd/server/handler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ func (h *Handler) registerRoutes(router *httprouter.Router) {
107107
h.Warden = warden.NewHandler(c, router)
108108

109109
// Create root account if new install
110-
h.createRS256KeysIfNotExist(c, oauth2.ConsentEndpointKey, "private")
111-
h.createRS256KeysIfNotExist(c, oauth2.ConsentChallengeKey, "private")
110+
createRS256KeysIfNotExist(c, oauth2.ConsentEndpointKey, "private", "sig")
111+
createRS256KeysIfNotExist(c, oauth2.ConsentChallengeKey, "private", "sig")
112112

113113
h.createRootIfNewInstall(c)
114114
}

cmd/server/handler_oauth2_factory.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,12 @@ func newOAuth2Provider(c *config.Config, km jwk.Manager) fosite.OAuth2Provider {
7272
var ctx = c.Context()
7373
var store = ctx.FositeStore
7474

75+
createRS256KeysIfNotExist(c, oauth2.OpenIDConnectKeyName, "private", "sig")
7576
keys, err := km.GetKey(oauth2.OpenIDConnectKeyName, "private")
7677
if errors.Cause(err) == pkg.ErrNotFound {
7778
logrus.Warnln("Could not find OpenID Connect signing keys. Generating a new keypair...")
7879
keys, err = new(jwk.RS256Generator).Generate("")
80+
7981
pkg.Must(err, "Could not generate signing key for OpenID Connect")
8082
km.AddKeySet(oauth2.OpenIDConnectKeyName, keys)
8183
logrus.Infoln("Keypair generated.")

cmd/server/helper_keys.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,20 @@ import (
1111
"github.com/ory-am/hydra/pkg"
1212
)
1313

14-
func (h *Handler) createRS256KeysIfNotExist(c *config.Config, set, lookup string) {
14+
func createRS256KeysIfNotExist(c *config.Config, set, kid, use string) {
1515
ctx := c.Context()
1616
generator := jwk.RS256Generator{}
1717

18-
if _, err := ctx.KeyManager.GetKey(set, lookup); errors.Cause(err) == pkg.ErrNotFound {
18+
if _, err := ctx.KeyManager.GetKey(set, kid); errors.Cause(err) == pkg.ErrNotFound {
1919
logrus.Infof("Key pair for signing %s is missing. Creating new one.", set)
2020

2121
keys, err := generator.Generate("")
2222
pkg.Must(err, "Could not generate %s key: %s", set, err)
2323

24+
for i, k := range keys.Keys {
25+
k.Use = use
26+
keys.Keys[i] = k
27+
}
2428
err = ctx.KeyManager.AddKeySet(set, keys)
2529
pkg.Must(err, "Could not persist %s key: %s", set, err)
2630
}

0 commit comments

Comments
 (0)