mirror of
https://github.com/minio/minio.git
synced 2025-11-10 14:09:48 -05:00
Fix crash observed in OPA initialization (#7990)
Related to #7982, this PR refactors the code such that we validate the OPA or JWKS in a common place. This is also a refactor which is already done in the new config migration change. Attempt to avoid any network I/O during Unmarshal of JSON from disk, instead do it later when updating the in-memory data structure.
This commit is contained in:
committed by
kannappanr
parent
54eded2e6f
commit
8d47ef503c
@@ -22,7 +22,6 @@ import (
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
xnet "github.com/minio/minio/pkg/net"
|
||||
)
|
||||
@@ -63,17 +62,8 @@ func (a *OpaArgs) UnmarshalJSON(data []byte) error {
|
||||
type subOpaArgs OpaArgs
|
||||
var so subOpaArgs
|
||||
|
||||
if opaURL, ok := os.LookupEnv("MINIO_IAM_OPA_URL"); ok {
|
||||
u, err := xnet.ParseURL(opaURL)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
so.URL = u
|
||||
so.AuthToken = os.Getenv("MINIO_IAM_OPA_AUTHTOKEN")
|
||||
} else {
|
||||
if err := json.Unmarshal(data, &so); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := json.Unmarshal(data, &so); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
oa := OpaArgs(so)
|
||||
@@ -82,10 +72,6 @@ func (a *OpaArgs) UnmarshalJSON(data []byte) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := oa.Validate(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
*a = oa
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ import (
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
@@ -38,11 +37,6 @@ type JWKSArgs struct {
|
||||
publicKeys map[string]crypto.PublicKey
|
||||
}
|
||||
|
||||
// Validate JWT authentication target arguments
|
||||
func (r *JWKSArgs) Validate() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// PopulatePublicKey - populates a new publickey from the JWKS URL.
|
||||
func (r *JWKSArgs) PopulatePublicKey() error {
|
||||
insecureClient := &http.Client{Transport: newCustomHTTPTransport(true)}
|
||||
@@ -83,17 +77,8 @@ func (r *JWKSArgs) UnmarshalJSON(data []byte) error {
|
||||
type subJWKSArgs JWKSArgs
|
||||
var sr subJWKSArgs
|
||||
|
||||
// IAM related envs.
|
||||
if jwksURL, ok := os.LookupEnv("MINIO_IAM_JWKS_URL"); ok {
|
||||
u, err := xnet.ParseURL(jwksURL)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
sr.URL = u
|
||||
} else {
|
||||
if err := json.Unmarshal(data, &sr); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := json.Unmarshal(data, &sr); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ar := JWKSArgs(sr)
|
||||
@@ -101,13 +86,6 @@ func (r *JWKSArgs) UnmarshalJSON(data []byte) error {
|
||||
*r = ar
|
||||
return nil
|
||||
}
|
||||
if err := ar.Validate(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := ar.PopulatePublicKey(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
*r = ar
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user