@@ -2,6 +2,7 @@ package oauth
22
33import (
44 "fmt"
5+ "strconv"
56
67 "github.com/tuannvm/oauth-mcp-proxy/provider"
78)
@@ -31,6 +32,11 @@ type Config struct {
3132 // Implement the Logger interface (Debug, Info, Warn, Error methods) to
3233 // integrate with your application's logging system (e.g., zap, logrus).
3334 Logger Logger
35+
36+ // Validation skip configuration
37+ SkipIssuerCheck bool
38+ SkipAudienceCheck bool
39+ SkipExpiryCheck bool
3440}
3541
3642// Validate validates the configuration
@@ -119,11 +125,14 @@ func SetupOAuth(cfg *Config) (provider.TokenValidator, error) {
119125func createValidator (cfg * Config , logger Logger ) (provider.TokenValidator , error ) {
120126 // Convert root Config to provider.Config
121127 providerCfg := & provider.Config {
122- Provider : cfg .Provider ,
123- Issuer : cfg .Issuer ,
124- Audience : cfg .Audience ,
125- JWTSecret : cfg .JWTSecret ,
126- Logger : logger ,
128+ Provider : cfg .Provider ,
129+ Issuer : cfg .Issuer ,
130+ Audience : cfg .Audience ,
131+ JWTSecret : cfg .JWTSecret ,
132+ Logger : logger ,
133+ SkipIssuerCheck : cfg .SkipIssuerCheck ,
134+ SkipAudienceCheck : cfg .SkipAudienceCheck ,
135+ SkipExpiryCheck : cfg .SkipExpiryCheck ,
127136 }
128137
129138 var validator provider.TokenValidator
@@ -223,6 +232,24 @@ func (b *ConfigBuilder) WithLogger(logger Logger) *ConfigBuilder {
223232 return b
224233}
225234
235+ // WithSkipIssuerCheck sets issuer check toggle
236+ func (b * ConfigBuilder ) WithSkipIssuerCheck (skipIssuerCheck bool ) * ConfigBuilder {
237+ b .config .SkipIssuerCheck = skipIssuerCheck
238+ return b
239+ }
240+
241+ // WithSkipAudienceCheck sets audience check toggle
242+ func (b * ConfigBuilder ) WithSkipAudienceCheck (skipAudienceCheck bool ) * ConfigBuilder {
243+ b .config .SkipAudienceCheck = skipAudienceCheck
244+ return b
245+ }
246+
247+ // WithSkipExpiryCheck sets expiry check toggle
248+ func (b * ConfigBuilder ) WithSkipExpiryCheck (skipExpiryCheck bool ) * ConfigBuilder {
249+ b .config .SkipExpiryCheck = skipExpiryCheck
250+ return b
251+ }
252+
226253// WithServerURL sets the full server URL directly
227254func (b * ConfigBuilder ) WithServerURL (url string ) * ConfigBuilder {
228255 b .config .ServerURL = url
@@ -289,7 +316,23 @@ func FromEnv() (*Config, error) {
289316 WithAudience (getEnv ("OIDC_AUDIENCE" , "" )).
290317 WithClientID (getEnv ("OIDC_CLIENT_ID" , "" )).
291318 WithClientSecret (getEnv ("OIDC_CLIENT_SECRET" , "" )).
319+ WithSkipAudienceCheck (parseBoolEnv ("OIDC_SKIP_AUDIENCE_CHECK" , false )).
320+ WithSkipIssuerCheck (parseBoolEnv ("OIDC_SKIP_ISSUER_CHECK" , false )).
321+ WithSkipExpiryCheck (parseBoolEnv ("OIDC_SKIP_EXPIRY_CHECK" , false )).
292322 WithServerURL (serverURL ).
293323 WithJWTSecret ([]byte (jwtSecret )).
294324 Build ()
295325}
326+
327+ // parseBoolEnv parses a boolean environment variable
328+ func parseBoolEnv (key string , defaultVal bool ) bool {
329+ val := getEnv (key , "" )
330+ if val == "" {
331+ return defaultVal
332+ }
333+ parsed , err := strconv .ParseBool (val )
334+ if err != nil {
335+ return defaultVal
336+ }
337+ return parsed
338+ }
0 commit comments