49 lines
1.5 KiB
Go
49 lines
1.5 KiB
Go
package confighelpers
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/centrifugal/centrifugo/v6/internal/configtypes"
|
|
"github.com/centrifugal/centrifugo/v6/internal/jwtutils"
|
|
"github.com/centrifugal/centrifugo/v6/internal/jwtverify"
|
|
)
|
|
|
|
func MakeVerifierConfig(tokenConf configtypes.Token) (jwtverify.VerifierConfig, error) {
|
|
cfg := jwtverify.VerifierConfig{}
|
|
|
|
cfg.HMACSecretKey = tokenConf.HMACSecretKey
|
|
cfg.HMACPreviousSecretKey = tokenConf.HMACPreviousSecretKey
|
|
cfg.HMACPreviousSecretKeyValidUntil = tokenConf.HMACPreviousSecretKeyValidUntil
|
|
|
|
rsaPublicKey := tokenConf.RSAPublicKey
|
|
if rsaPublicKey != "" {
|
|
pubKey, err := jwtutils.ParseRSAPublicKeyFromPEM([]byte(rsaPublicKey))
|
|
if err != nil {
|
|
return jwtverify.VerifierConfig{}, fmt.Errorf("error parsing RSA public key: %w", err)
|
|
}
|
|
cfg.RSAPublicKey = pubKey
|
|
}
|
|
|
|
ecdsaPublicKey := tokenConf.ECDSAPublicKey
|
|
if ecdsaPublicKey != "" {
|
|
pubKey, err := jwtutils.ParseECDSAPublicKeyFromPEM([]byte(ecdsaPublicKey))
|
|
if err != nil {
|
|
return jwtverify.VerifierConfig{}, fmt.Errorf("error parsing ECDSA public key: %w", err)
|
|
}
|
|
cfg.ECDSAPublicKey = pubKey
|
|
}
|
|
|
|
cfg.JWKSPublicEndpoint = tokenConf.JWKSPublicEndpoint
|
|
cfg.Audience = tokenConf.Audience
|
|
cfg.AudienceRegex = tokenConf.AudienceRegex
|
|
cfg.Issuer = tokenConf.Issuer
|
|
cfg.IssuerRegex = tokenConf.IssuerRegex
|
|
cfg.InsecureSkipJWKSEndpointSafetyCheck = tokenConf.InsecureSkipJWKSEndpointSafetyCheck
|
|
|
|
if tokenConf.UserIDClaim != "" {
|
|
cfg.UserIDClaim = tokenConf.UserIDClaim
|
|
}
|
|
|
|
return cfg, nil
|
|
}
|