@@ -108,11 +108,6 @@ func (p *OpenShiftProvider) LoadDefaults(serviceAccount string, caPaths []string
108
108
}
109
109
}
110
110
111
- // attempt to discover endpoints
112
- if err := discoverOpenShiftOAuth (defaults , p .Client ); err != nil {
113
- log .Printf ("Unable to discover default cluster OAuth info: %v" , err )
114
- return defaults , nil
115
- }
116
111
// provide default URLs
117
112
defaults .ValidateURL = getKubeAPIURLWithPath ("/apis/user.openshift.io/v1/users/~" )
118
113
@@ -510,67 +505,54 @@ func (p *OpenShiftProvider) Redeem(redeemURL *url.URL, redirectURL, code string)
510
505
return
511
506
}
512
507
513
- func (p * OpenShiftProvider ) GetLoginURL () * url.URL {
508
+ func (p * OpenShiftProvider ) GetLoginURL () ( * url.URL , error ) {
514
509
if ! emptyURL (p .ConfigLoginURL ) {
515
- return p .ConfigLoginURL
510
+ return p .ConfigLoginURL , nil
516
511
}
517
512
518
- if emptyURL (p .LoginURL ) {
519
- // clear the endpoints so that we get all the newly discovered endpoints for all
520
- p .ClearEndpointsCache ()
521
- discoverOpenShiftOAuth (p .ProviderData , p .Client )
522
- }
523
- return p .LoginURL
513
+ loginURL , _ , err := discoverOpenShiftOAuth (p .Client )
514
+ return loginURL , err
524
515
}
525
516
526
- func (p * OpenShiftProvider ) GetRedeemURL () * url.URL {
517
+ func (p * OpenShiftProvider ) GetRedeemURL () ( * url.URL , error ) {
527
518
if ! emptyURL (p .ConfigRedeemURL ) {
528
- return p .ConfigRedeemURL
519
+ return p .ConfigRedeemURL , nil
529
520
}
530
521
531
- if emptyURL (p .RedeemURL ) {
532
- // clear the endpoints so that we get all the newly discovered endpoints
533
- p .ClearEndpointsCache ()
534
- discoverOpenShiftOAuth (p .ProviderData , p .Client )
535
- }
536
- return p .RedeemURL
522
+ _ , redeemURL , err := discoverOpenShiftOAuth (p .Client )
523
+ return redeemURL , err
537
524
}
538
525
539
- // discoverOpenshiftOAuth sets the LoginURL and RedeemURL of the supplied ProviderData if they are unset or empty
540
- func discoverOpenShiftOAuth (provider * providers.ProviderData , client * http.Client ) error {
526
+ // discoverOpenshiftOAuth returns the urls of the login and code redeem endpoitns
527
+ // it receives from the /.well-known/oauth-authorization-server endpoint
528
+ func discoverOpenShiftOAuth (client * http.Client ) (* url.URL , * url.URL , error ) {
541
529
wellKnownAuthorization := getKubeAPIURLWithPath ("/.well-known/oauth-authorization-server" )
542
530
log .Printf ("Performing OAuth discovery against %s" , wellKnownAuthorization )
543
531
req , err := http .NewRequest ("GET" , wellKnownAuthorization .String (), nil )
544
532
if err != nil {
545
- return err
533
+ return nil , nil , err
546
534
}
547
535
json , err := request (client , req )
548
536
if err != nil {
549
- return err
537
+ return nil , nil , err
550
538
}
551
- if emptyURL (provider .LoginURL ) {
552
- if value , err := json .Get ("authorization_endpoint" ).String (); err == nil && len (value ) > 0 {
553
- if u , err := url .Parse (value ); err == nil {
554
- provider .LoginURL = u
555
- } else {
556
- log .Printf ("Unable to parse 'authorization_endpoint' from %s: %v" , wellKnownAuthorization , err )
557
- }
558
- } else {
559
- log .Printf ("No 'authorization_endpoint' provided by %s: %v" , wellKnownAuthorization , err )
539
+
540
+ var loginURL , redeemURL * url.URL
541
+ if value , err := json .Get ("authorization_endpoint" ).String (); err == nil && len (value ) > 0 {
542
+ if loginURL , err = url .Parse (value ); err != nil {
543
+ return nil , nil , fmt .Errorf ("Unable to parse 'authorization_endpoint' from %s: %v" , wellKnownAuthorization , err )
560
544
}
545
+ } else {
546
+ return nil , nil , fmt .Errorf ("No 'authorization_endpoint' provided by %s: %v" , wellKnownAuthorization , err )
561
547
}
562
- if emptyURL (provider .RedeemURL ) {
563
- if value , err := json .Get ("token_endpoint" ).String (); err == nil && len (value ) > 0 {
564
- if u , err := url .Parse (value ); err == nil {
565
- provider .RedeemURL = u
566
- } else {
567
- log .Printf ("Unable to parse 'token_endpoint' from %s: %v" , wellKnownAuthorization , err )
568
- }
569
- } else {
570
- log .Printf ("No 'token_endpoint' provided by %s: %v" , wellKnownAuthorization , err )
548
+ if value , err := json .Get ("token_endpoint" ).String (); err == nil && len (value ) > 0 {
549
+ if redeemURL , err = url .Parse (value ); err != nil {
550
+ return nil , nil , fmt .Errorf ("Unable to parse 'token_endpoint' from %s: %v" , wellKnownAuthorization , err )
571
551
}
552
+ } else {
553
+ return nil , nil , fmt .Errorf ("No 'token_endpoint' provided by %s: %v" , wellKnownAuthorization , err )
572
554
}
573
- return nil
555
+ return loginURL , redeemURL , nil
574
556
}
575
557
576
558
// Copied to override http.Client so that CA can be set
0 commit comments