@@ -9,15 +9,16 @@ import (
9
9
"net/url"
10
10
"strings"
11
11
12
+ "github.com/RangelReale/osincli"
13
+ "github.com/golang/glog"
14
+ "github.com/pkg/errors"
15
+
12
16
apierrs "k8s.io/apimachinery/pkg/api/errors"
13
17
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14
18
"k8s.io/apimachinery/pkg/util/sets"
15
19
restclient "k8s.io/client-go/rest"
16
20
17
21
"github.com/openshift/origin/pkg/oauth/util"
18
-
19
- "github.com/RangelReale/osincli"
20
- "github.com/golang/glog"
21
22
)
22
23
23
24
const (
@@ -106,23 +107,23 @@ func (o *RequestTokenOptions) SetDefaultOsinConfig() error {
106
107
// get the OAuth metadata from the server
107
108
rt , err := restclient .TransportFor (o .ClientConfig )
108
109
if err != nil {
109
- return err
110
+ return errors . Wrap ( err , "failed to get transport for client" )
110
111
}
111
112
112
113
requestURL := strings .TrimRight (o .ClientConfig .Host , "/" ) + oauthMetadataEndpoint
113
114
resp , err := request (rt , requestURL , nil )
114
115
if err != nil {
115
- return err
116
+ return errors . Wrapf ( err , "failed to request OAuth metadata at url %q" , requestURL )
116
117
}
117
118
defer resp .Body .Close ()
118
119
119
120
if resp .StatusCode != http .StatusOK {
120
- return fmt .Errorf ("couldn't get %v : unexpected response status %v " , requestURL , resp .StatusCode )
121
+ return errors .Errorf ("couldn't get %q : unexpected response status %q " , requestURL , resp .Status )
121
122
}
122
123
123
124
metadata := & util.OauthAuthorizationServerMetadata {}
124
125
if err := json .NewDecoder (resp .Body ).Decode (metadata ); err != nil {
125
- return err
126
+ return errors . Wrap ( err , "failed to decode OAuth metadata" )
126
127
}
127
128
128
129
// use the metadata to build the osin config
@@ -134,7 +135,7 @@ func (o *RequestTokenOptions) SetDefaultOsinConfig() error {
134
135
}
135
136
if ! o .TokenFlow && sets .NewString (metadata .CodeChallengeMethodsSupported ... ).Has (pkce_s256 ) {
136
137
if err := osincli .PopulatePKCE (config ); err != nil {
137
- return err
138
+ return errors . Wrap ( err , "failed to populate PKCE" )
138
139
}
139
140
}
140
141
@@ -159,18 +160,18 @@ func (o *RequestTokenOptions) RequestToken() (string, error) {
159
160
160
161
rt , err := restclient .TransportFor (o .ClientConfig )
161
162
if err != nil {
162
- return "" , err
163
+ return "" , errors . Wrapf ( err , "failed to create transport for client" )
163
164
}
164
165
165
166
if o .OsinConfig == nil {
166
167
if err := o .SetDefaultOsinConfig (); err != nil {
167
- return "" , err
168
+ return "" , errors . Wrapf ( err , "failed to set default osin config" )
168
169
}
169
170
}
170
171
171
172
client , err := osincli .NewClient (o .OsinConfig )
172
173
if err != nil {
173
- return "" , err
174
+ return "" , errors . Wrapf ( err , "failed to create new client" )
174
175
}
175
176
client .Transport = rt
176
177
authorizeRequest := client .NewAuthorizeRequest (osincli .CODE ) // assume code flow to start with
@@ -200,7 +201,7 @@ func (o *RequestTokenOptions) RequestToken() (string, error) {
200
201
// Make the request
201
202
resp , err := request (rt , requestURL , requestHeaders )
202
203
if err != nil {
203
- return "" , err
204
+ return "" , errors . Wrapf ( err , "failed to request token" )
204
205
}
205
206
defer resp .Body .Close ()
206
207
@@ -212,7 +213,7 @@ func (o *RequestTokenOptions) RequestToken() (string, error) {
212
213
// Handle the challenge
213
214
newRequestHeaders , shouldRetry , err := o .Handler .HandleChallenge (requestURL , resp .Header )
214
215
if err != nil {
215
- return "" , err
216
+ return "" , errors . Wrapf ( err , "failed to handle challenge" )
216
217
}
217
218
if ! shouldRetry {
218
219
return "" , apierrs .NewUnauthorized ("challenger chose not to retry the request" )
@@ -246,7 +247,7 @@ func (o *RequestTokenOptions) RequestToken() (string, error) {
246
247
// this is required for negotiate flows with mutual authentication.
247
248
if handledChallenge {
248
249
if err := o .Handler .CompleteChallenge (requestURL , resp .Header ); err != nil {
249
- return "" , err
250
+ return "" , errors . Wrapf ( err , "failed to complete challenge" )
250
251
}
251
252
}
252
253
@@ -256,7 +257,7 @@ func (o *RequestTokenOptions) RequestToken() (string, error) {
256
257
// OAuth response case
257
258
accessToken , err := oauthTokenFunc (redirectURL )
258
259
if err != nil {
259
- return "" , err
260
+ return "" , errors . Wrapf ( err , "failed to get token after redirect" )
260
261
}
261
262
if len (accessToken ) > 0 {
262
263
return accessToken , nil
0 commit comments