move oidcHandler from global to pluginconfig (#1601)

This commit is contained in:
rinfx
2024-12-26 19:15:20 +08:00
committed by GitHub
parent 579c986915
commit 2a4e55d46f
3 changed files with 10 additions and 21 deletions

View File

@@ -29,10 +29,9 @@ func main() {
)
}
var oidcHandler *oidc.OAuthProxy
type PluginConfig struct {
options *options.Options
oidcHandler *oidc.OAuthProxy
options *options.Options
}
// 在控制台插件配置中填写的yaml配置会自动转换为json此处直接从json这个参数里解析配置即可
@@ -45,19 +44,19 @@ func parseConfig(json gjson.Result, config *PluginConfig, log wrapper.Log) error
opts.Providers[0].Scope = strings.Replace(opts.Providers[0].Scope, ";", " ", -1)
config.options = opts
oidcHandler, err = oidc.NewOAuthProxy(opts)
config.oidcHandler, err = oidc.NewOAuthProxy(opts)
if err != nil {
return err
}
wrapper.RegisteTickFunc(opts.VerifierInterval.Milliseconds(), func() {
oidcHandler.SetVerifier(opts)
config.oidcHandler.SetVerifier(opts)
})
return nil
}
func onHttpRequestHeaders(ctx wrapper.HttpContext, config PluginConfig, log wrapper.Log) types.Action {
oidcHandler.SetContext(ctx)
config.oidcHandler.SetContext(ctx)
req := getHttpRequest()
rw := util.NewRecorder()
if options.IsAllowedByMode(req.URL.Host, req.URL.Path, config.options.MatchRules, config.options.ProxyPrefix) {
@@ -66,12 +65,12 @@ func onHttpRequestHeaders(ctx wrapper.HttpContext, config PluginConfig, log wrap
}
// TODO: remove this verifier after envoy support send request during parseConfig
if err := oidcHandler.ValidateVerifier(); err != nil {
if err := config.oidcHandler.ValidateVerifier(); err != nil {
log.Critical(err.Error())
return types.ActionContinue
}
oidcHandler.ServeHTTP(rw, req)
config.oidcHandler.ServeHTTP(rw, req)
if code := rw.GetStatus(); code != 0 {
return types.ActionContinue
}
@@ -83,7 +82,7 @@ func onHttpResponseHeaders(ctx wrapper.HttpContext, config PluginConfig, log wra
if value != nil {
proxywasm.AddHttpResponseHeader(oidc.SetCookieHeader, value.(string))
}
oidcHandler.SetContext(nil)
config.oidcHandler.SetContext(nil)
return types.ActionContinue
}