Skip to content

Commit 91c72f1

Browse files
committed
WIP: move up oauth metadata creation
Signed-off-by: Simo Sorce <[email protected]>
1 parent 23e7112 commit 91c72f1

File tree

2 files changed

+31
-38
lines changed

2 files changed

+31
-38
lines changed

pkg/cmd/server/origin/master.go

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package origin
22

33
import (
4+
"encoding/json"
45
"fmt"
56
"io/ioutil"
67
"net/http"
@@ -75,24 +76,37 @@ func (c *MasterConfig) newOpenshiftAPIConfig(kubeAPIServerConfig apiserver.Confi
7576
return ret, ret.ExtraConfig.Validate()
7677
}
7778

78-
func (c *MasterConfig) newOpenshiftNonAPIConfig(kubeAPIServerConfig apiserver.Config) *OpenshiftNonAPIConfig {
79+
// Prep OAuth metadata once
80+
func (c *MasterConfig) prepOauthMetadata(config *OpenshiftNonAPIConfig) error {
81+
var err error
82+
if c.Options.OAuthConfig != nil {
83+
config.ExtraConfig.OAuthMetadata, err = json.MarshalIndent(oauthutil.GetOauthMetadata(c.Options.OAuthConfig.MasterPublicURL), "", " ")
84+
if err != nil {
85+
glog.Errorf("Unable to initialize OAuth authorization server metadata route: %v", err)
86+
return err
87+
}
88+
}
89+
if c.Options.ExternalOAuthConfig != nil {
90+
config.ExtraConfig.OAuthMetadata, err = oauthutil.LoadOAuthMetadataFile(c.Options.ExternalOAuthConfig.MetadataFile)
91+
if err != nil {
92+
return err
93+
}
94+
}
95+
return nil
96+
}
97+
98+
func (c *MasterConfig) newOpenshiftNonAPIConfig(kubeAPIServerConfig apiserver.Config) (*OpenshiftNonAPIConfig, error) {
7999
ret := &OpenshiftNonAPIConfig{
80100
GenericConfig: &apiserver.RecommendedConfig{
81101
Config: kubeAPIServerConfig,
82102
SharedInformerFactory: c.ClientGoKubeInformers,
83103
},
84-
ExtraConfig: NonAPIExtraConfig{
85-
EnableOAuth: c.Options.OAuthConfig != nil || c.Options.ExternalOAuthConfig != nil,
86-
},
87-
}
88-
if c.Options.OAuthConfig != nil {
89-
ret.ExtraConfig.MasterPublicURL = c.Options.OAuthConfig.MasterPublicURL
90104
}
91-
if c.Options.ExternalOAuthConfig != nil {
92-
ret.ExtraConfig.OAuthMetadataFile = c.Options.ExternalOAuthConfig.MetadataFile
105+
if err := c.prepOauthMetadata(ret); err != nil {
106+
return nil, err
93107
}
94108

95-
return ret
109+
return ret, nil
96110
}
97111

98112
func (c *MasterConfig) withAPIExtensions(delegateAPIServer apiserver.DelegationTarget, kubeAPIServerConfig apiserver.Config) (apiserver.DelegationTarget, apiextensionsinformers.SharedInformerFactory, error) {
@@ -113,7 +127,10 @@ func (c *MasterConfig) withAPIExtensions(delegateAPIServer apiserver.DelegationT
113127
}
114128

115129
func (c *MasterConfig) withNonAPIRoutes(delegateAPIServer apiserver.DelegationTarget, kubeAPIServerConfig apiserver.Config) (apiserver.DelegationTarget, error) {
116-
openshiftNonAPIConfig := c.newOpenshiftNonAPIConfig(kubeAPIServerConfig)
130+
openshiftNonAPIConfig, err := c.newOpenshiftNonAPIConfig(kubeAPIServerConfig)
131+
if err != nil {
132+
return nil, err
133+
}
117134
openshiftNonAPIServer, err := openshiftNonAPIConfig.Complete().New(delegateAPIServer)
118135
if err != nil {
119136
return nil, err

pkg/cmd/server/origin/nonapiserver.go

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,15 @@
11
package origin
22

33
import (
4-
"encoding/json"
54
"net/http"
65

7-
"github.com/golang/glog"
8-
96
genericmux "k8s.io/apiserver/pkg/server/mux"
107

11-
oauthutil "github.com/openshift/origin/pkg/oauth/util"
128
genericapiserver "k8s.io/apiserver/pkg/server"
139
)
1410

1511
type NonAPIExtraConfig struct {
16-
MasterPublicURL string
17-
EnableOAuth bool
18-
OAuthMetadataFile string
12+
OAuthMetadata []byte
1913
}
2014

2115
type OpenshiftNonAPIConfig struct {
@@ -60,7 +54,7 @@ func (c completedOpenshiftNonAPIConfig) New(delegationTarget genericapiserver.De
6054

6155
// TODO move this up to the spot where we wire the oauth endpoint
6256
// Set up OAuth metadata only if we are configured to use OAuth
63-
if c.ExtraConfig.EnableOAuth {
57+
if len(c.ExtraConfig.OAuthMetadata) > 0 {
6458
initOAuthAuthorizationServerMetadataRoute(s.GenericAPIServer.Handler.NonGoRestfulMux, c.ExtraConfig)
6559
}
6660

@@ -78,27 +72,9 @@ const (
7872
// https://tools.ietf.org/id/draft-ietf-oauth-discovery-04.html#rfc.section.2
7973
// masterPublicURL should be internally and externally routable to allow all users to discover this information
8074
func initOAuthAuthorizationServerMetadataRoute(mux *genericmux.PathRecorderMux, ExtraConfig *NonAPIExtraConfig) {
81-
// Build OAuth metadata once
82-
var metadata []byte
83-
var err error
84-
85-
if len(ExtraConfig.OAuthMetadataFile) > 0 {
86-
metadata, err = oauthutil.LoadOAuthMetadataFile(ExtraConfig.OAuthMetadataFile)
87-
if err != nil {
88-
glog.Error(err)
89-
return
90-
}
91-
} else {
92-
metadata, err = json.MarshalIndent(oauthutil.GetOauthMetadata(ExtraConfig.MasterPublicURL), "", " ")
93-
if err != nil {
94-
glog.Errorf("Unable to initialize OAuth authorization server metadata route: %v", err)
95-
return
96-
}
97-
}
98-
9975
mux.UnlistedHandleFunc(oauthMetadataEndpoint, func(w http.ResponseWriter, req *http.Request) {
10076
w.Header().Set("Content-Type", "application/json")
10177
w.WriteHeader(http.StatusOK)
102-
w.Write(metadata)
78+
w.Write(ExtraConfig.OAuthMetadata)
10379
})
10480
}

0 commit comments

Comments
 (0)