AuthProxy: Allow disabling Auth Proxy cache (#83755)
* extract auth proxy settings * simplify auth proxy methods * add doc mentions
This commit is contained in:
+2
-34
@@ -256,15 +256,7 @@ type Cfg struct {
|
||||
Azure *azsettings.AzureSettings
|
||||
|
||||
// Auth proxy settings
|
||||
AuthProxyEnabled bool
|
||||
AuthProxyHeaderName string
|
||||
AuthProxyHeaderProperty string
|
||||
AuthProxyAutoSignUp bool
|
||||
AuthProxyEnableLoginToken bool
|
||||
AuthProxyWhitelist string
|
||||
AuthProxyHeaders map[string]string
|
||||
AuthProxyHeadersEncoded bool
|
||||
AuthProxySyncTTL int
|
||||
AuthProxy AuthProxySettings
|
||||
|
||||
// OAuth
|
||||
OAuthAutoLogin bool
|
||||
@@ -1197,6 +1189,7 @@ func (cfg *Cfg) parseINIFile(iniFile *ini.File) error {
|
||||
cfg.handleAWSConfig()
|
||||
cfg.readAzureSettings()
|
||||
cfg.readAuthJWTSettings()
|
||||
cfg.readAuthProxySettings()
|
||||
cfg.readSessionConfig()
|
||||
if err := cfg.readSmtpSettings(); err != nil {
|
||||
return err
|
||||
@@ -1617,31 +1610,6 @@ func readAuthSettings(iniFile *ini.File, cfg *Cfg) (err error) {
|
||||
cfg.ExtendedJWTExpectAudience = authExtendedJWT.Key("expect_audience").MustString("")
|
||||
cfg.ExtendedJWTExpectIssuer = authExtendedJWT.Key("expect_issuer").MustString("")
|
||||
|
||||
// Auth Proxy
|
||||
authProxy := iniFile.Section("auth.proxy")
|
||||
cfg.AuthProxyEnabled = authProxy.Key("enabled").MustBool(false)
|
||||
|
||||
cfg.AuthProxyHeaderName = valueAsString(authProxy, "header_name", "")
|
||||
cfg.AuthProxyHeaderProperty = valueAsString(authProxy, "header_property", "")
|
||||
cfg.AuthProxyAutoSignUp = authProxy.Key("auto_sign_up").MustBool(true)
|
||||
cfg.AuthProxyEnableLoginToken = authProxy.Key("enable_login_token").MustBool(false)
|
||||
|
||||
cfg.AuthProxySyncTTL = authProxy.Key("sync_ttl").MustInt()
|
||||
|
||||
cfg.AuthProxyWhitelist = valueAsString(authProxy, "whitelist", "")
|
||||
|
||||
cfg.AuthProxyHeaders = make(map[string]string)
|
||||
headers := valueAsString(authProxy, "headers", "")
|
||||
|
||||
for _, propertyAndHeader := range util.SplitString(headers) {
|
||||
split := strings.SplitN(propertyAndHeader, ":", 2)
|
||||
if len(split) == 2 {
|
||||
cfg.AuthProxyHeaders[split[0]] = split[1]
|
||||
}
|
||||
}
|
||||
|
||||
cfg.AuthProxyHeadersEncoded = authProxy.Key("headers_encoded").MustBool(false)
|
||||
|
||||
// SSO Settings
|
||||
ssoSettings := iniFile.Section("sso_settings")
|
||||
cfg.SSOSettingsReloadInterval = ssoSettings.Key("reload_interval").MustDuration(1 * time.Minute)
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
package setting
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/grafana/grafana/pkg/util"
|
||||
)
|
||||
|
||||
type AuthProxySettings struct {
|
||||
// Auth Proxy
|
||||
Enabled bool
|
||||
HeaderName string
|
||||
HeaderProperty string
|
||||
AutoSignUp bool
|
||||
EnableLoginToken bool
|
||||
Whitelist string
|
||||
Headers map[string]string
|
||||
HeadersEncoded bool
|
||||
SyncTTL int
|
||||
}
|
||||
|
||||
func (cfg *Cfg) readAuthProxySettings() {
|
||||
authProxySettings := AuthProxySettings{}
|
||||
authProxy := cfg.Raw.Section("auth.proxy")
|
||||
authProxySettings.Enabled = authProxy.Key("enabled").MustBool(false)
|
||||
authProxySettings.HeaderName = valueAsString(authProxy, "header_name", "")
|
||||
authProxySettings.HeaderProperty = valueAsString(authProxy, "header_property", "")
|
||||
authProxySettings.AutoSignUp = authProxy.Key("auto_sign_up").MustBool(true)
|
||||
authProxySettings.EnableLoginToken = authProxy.Key("enable_login_token").MustBool(false)
|
||||
authProxySettings.SyncTTL = authProxy.Key("sync_ttl").MustInt(15)
|
||||
authProxySettings.Whitelist = valueAsString(authProxy, "whitelist", "")
|
||||
authProxySettings.Headers = make(map[string]string)
|
||||
headers := valueAsString(authProxy, "headers", "")
|
||||
|
||||
for _, propertyAndHeader := range util.SplitString(headers) {
|
||||
split := strings.SplitN(propertyAndHeader, ":", 2)
|
||||
if len(split) == 2 {
|
||||
authProxySettings.Headers[split[0]] = split[1]
|
||||
}
|
||||
}
|
||||
|
||||
authProxySettings.HeadersEncoded = authProxy.Key("headers_encoded").MustBool(false)
|
||||
|
||||
cfg.AuthProxy = authProxySettings
|
||||
}
|
||||
@@ -13,11 +13,12 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/util/osutil"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"gopkg.in/ini.v1"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/util/osutil"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -274,7 +275,7 @@ func TestLoadingSettings(t *testing.T) {
|
||||
})
|
||||
require.Nil(t, err)
|
||||
|
||||
require.Equal(t, 2, cfg.AuthProxySyncTTL)
|
||||
require.Equal(t, 2, cfg.AuthProxy.SyncTTL)
|
||||
})
|
||||
|
||||
t.Run("Test reading string values from .ini file", func(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user