in pkg/internal/token/options.go [126:165]
func (o *Options) Validate() error {
foundValidLoginMethod := false
for _, v := range supportedLogin {
if o.LoginMethod == v {
foundValidLoginMethod = true
}
}
if !foundValidLoginMethod {
return fmt.Errorf("'%s' is not a supported login method. Supported method is one of %s", o.LoginMethod, GetSupportedLogins())
}
if o.AuthorityHost != "" {
u, err := url.ParseRequestURI(o.AuthorityHost)
if err != nil {
return fmt.Errorf("authority host %q is not valid: %s", o.AuthorityHost, err)
}
if u.Scheme == "" || u.Host == "" {
return fmt.Errorf("authority host %q is not valid", o.AuthorityHost)
}
if !strings.HasSuffix(o.AuthorityHost, "/") {
return fmt.Errorf("authority host %q should have a trailing slash", o.AuthorityHost)
}
}
// both of the following checks ensure that --pop-enabled and --pop-claims flags are provided together
if o.IsPoPTokenEnabled && o.PoPTokenClaims == "" {
return fmt.Errorf("if enabling pop token mode, please provide the pop-claims flag containing the PoP token claims as a comma-separated string: `u=popClaimHost,key1=val1`")
}
if o.PoPTokenClaims != "" && !o.IsPoPTokenEnabled {
return fmt.Errorf("pop-enabled flag is required to use the PoP token feature. Please provide both pop-enabled and pop-claims flags")
}
if o.Timeout <= 0 {
return fmt.Errorf("timeout must be greater than 0")
}
return nil
}