@@ -59,9 +59,11 @@ import (
59
59
kversion "k8s.io/kubernetes/pkg/version"
60
60
61
61
"github.com/openshift/origin/pkg/api"
62
+ oauthorizer "github.com/openshift/origin/pkg/authorization/authorizer"
62
63
"github.com/openshift/origin/pkg/authorization/authorizer/scope"
63
64
"github.com/openshift/origin/pkg/cmd/flagtypes"
64
65
configapi "github.com/openshift/origin/pkg/cmd/server/api"
66
+ "github.com/openshift/origin/pkg/cmd/server/bootstrappolicy"
65
67
"github.com/openshift/origin/pkg/cmd/server/cm"
66
68
"github.com/openshift/origin/pkg/cmd/server/crypto"
67
69
"github.com/openshift/origin/pkg/cmd/server/election"
@@ -449,6 +451,7 @@ func buildKubeApiserverConfig(
449
451
genericConfig .DisabledPostStartHooks .Insert ("extensions/third-party-resources" )
450
452
genericConfig .AdmissionControl = admissionControl
451
453
genericConfig .RequestContextMapper = requestContextMapper
454
+ genericConfig .RequestInfoResolver = openshiftRequestInfoResolver (genericConfig .RequestContextMapper )
452
455
genericConfig .OpenAPIConfig = defaultOpenAPIConfig (masterConfig )
453
456
genericConfig .SwaggerConfig = apiserver .DefaultSwaggerConfig ()
454
457
genericConfig .SwaggerConfig .PostBuildHandler = customizeSwaggerDefinition
@@ -781,3 +784,18 @@ func readCAorNil(file string) ([]byte, error) {
781
784
func newMasterLeases (storage storage.Interface , masterEndpointReconcileTTL int ) election.Leases {
782
785
return election .NewLeases (storage , "/masterleases/" , uint64 (masterEndpointReconcileTTL ))
783
786
}
787
+
788
+ func openshiftRequestInfoResolver (requestContextMapper apirequest.RequestContextMapper ) apirequest.RequestInfoResolver {
789
+ // Default API request info factory
790
+ requestInfoFactory := & apirequest.RequestInfoFactory {APIPrefixes : sets .NewString ("api" , "osapi" , "oapi" , "apis" ), GrouplessAPIPrefixes : sets .NewString ("api" , "osapi" , "oapi" )}
791
+ // Wrap with a request info factory that detects unsafe requests and modifies verbs/resources appropriately so policy can address them separately
792
+ browserSafeRequestInfoResolver := oauthorizer .NewBrowserSafeRequestInfoResolver (
793
+ requestContextMapper ,
794
+ sets .NewString (bootstrappolicy .AuthenticatedGroup ),
795
+ requestInfoFactory ,
796
+ )
797
+ personalSARRequestInfoResolver := oauthorizer .NewPersonalSARRequestInfoResolver (browserSafeRequestInfoResolver )
798
+ projectRequestInfoResolver := oauthorizer .NewProjectRequestInfoResolver (personalSARRequestInfoResolver )
799
+
800
+ return projectRequestInfoResolver
801
+ }
0 commit comments