mirror of
https://github.com/nais/wonderwall.git
synced 2026-08-18 10:36:16 +00:00
make redis support configurable
This commit is contained in:
+15
-1
@@ -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
@@ -1,6 +1,6 @@
|
||||
version: "3"
|
||||
services:
|
||||
postgres:
|
||||
redis:
|
||||
image: redis:6
|
||||
ports:
|
||||
- "6379:6379"
|
||||
|
||||
@@ -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.")
|
||||
|
||||
Reference in New Issue
Block a user