make redis support configurable

This commit is contained in:
Kim Tore Jensen
2021-08-24 13:07:57 +02:00
parent 94569a6f3c
commit 097f4fd5b2
3 changed files with 19 additions and 2 deletions
+15 -1
View File
@@ -2,6 +2,7 @@ package main
import (
"context"
"github.com/go-redis/redis/v8"
"github.com/nais/wonderwall/pkg/session"
"net/http"
"os"
@@ -51,6 +52,19 @@ func run() error {
}
crypt := cryptutil.New(key)
var sessionStore session.Store
if len(cfg.Redis) > 0 {
redisClient := redis.NewClient(&redis.Options{
Network: "tcp",
Addr: cfg.Redis,
})
sessionStore = session.NewRedis(redisClient)
log.Infof("Using Redis as session backing store")
} else {
sessionStore = session.NewMemory()
log.Warnf("Redis not configured, using in-memory session backing store; not suitable for multi-pod deployments!")
}
oauthConfig := oauth2.Config{
ClientID: cfg.IDPorten.ClientID,
Endpoint: oauth2.Endpoint{
@@ -67,7 +81,7 @@ func run() error {
OauthConfig: oauthConfig,
UpstreamHost: cfg.UpstreamHost,
SecureCookies: true,
Sessions: session.NewMemory(),
Sessions: sessionStore,
IdTokenVerifier: oidc.NewVerifier(
cfg.IDPorten.WellKnown.Issuer,
oidc.NewRemoteKeySet(context.Background(), cfg.IDPorten.WellKnown.JwksURI),
+1 -1
View File
@@ -1,6 +1,6 @@
version: "3"
services:
postgres:
redis:
image: redis:6
ports:
- "6379:6379"
+3
View File
@@ -13,6 +13,7 @@ type Config struct {
IDPorten IDPorten `json:"idporten"`
LogFormat string `json:"log-format"`
LogLevel string `json:"log-level"`
Redis string `json:"redis"`
}
type IDPorten struct {
@@ -31,6 +32,7 @@ const (
UpstreamHost = "upstream-host"
LogFormat = "log-format"
LogLevel = "log-level"
Redis="redis"
IDPortenClientID = "idporten.client-id"
IDPortenClientJWK = "idporten.client-jwk"
IDPortenRedirectURI = "idporten.redirect-uri"
@@ -55,6 +57,7 @@ func Initialize() *Config {
flag.String(LogLevel, "debug", "Logging verbosity level.")
flag.String(BindAddress, "127.0.0.1:8090", "Listen address.")
flag.String(UpstreamHost, "127.0.0.1:8080", "Address of upstream host.")
flag.String(Redis, "", "Address of Redis. An empty value will use in-memory session storage.")
flag.String(IDPortenSecurityLevel, "Level4", "Requested security level, either Level3 or Level4.")
flag.String(IDPortenLocale, "nb", "Locale for OAuth2 consent screen.")
flag.String(IDPortenPostLogoutRedirectURI, "https://nav.no", "URI for redirecting the user after successful logout at IDPorten.")