@@ -68,11 +68,10 @@ type KeyFlowConfig struct {
6868// TokenResponseBody is the API response
6969// when requesting a new token
7070type TokenResponseBody struct {
71- AccessToken string `json:"access_token"`
72- ExpiresIn int `json:"expires_in"`
73- RefreshToken string `json:"refresh_token"`
74- Scope string `json:"scope"`
75- TokenType string `json:"token_type"`
71+ AccessToken string `json:"access_token"`
72+ ExpiresIn int `json:"expires_in"`
73+ Scope string `json:"scope"`
74+ TokenType string `json:"token_type"`
7675}
7776
7877// ServiceAccountKeyResponse is the API response
@@ -158,9 +157,9 @@ func (c *KeyFlow) Init(cfg *KeyFlowConfig) error {
158157 return nil
159158}
160159
161- // SetToken can be used to set an access and refresh token manually in the client.
160+ // SetToken can be used to set an access token manually in the client.
162161// The other fields in the token field are determined by inspecting the token or setting default values.
163- func (c * KeyFlow ) SetToken (accessToken , refreshToken string ) error {
162+ func (c * KeyFlow ) SetToken (accessToken string ) error {
164163 // We can safely use ParseUnverified because we are not authenticating the user,
165164 // We are parsing the token just to get the expiration time claim
166165 parsedAccessToken , _ , err := jwt .NewParser ().ParseUnverified (accessToken , & jwt.RegisteredClaims {})
@@ -174,11 +173,10 @@ func (c *KeyFlow) SetToken(accessToken, refreshToken string) error {
174173
175174 c .tokenMutex .Lock ()
176175 c .token = & TokenResponseBody {
177- AccessToken : accessToken ,
178- ExpiresIn : int (exp .Time .Unix ()),
179- Scope : defaultScope ,
180- RefreshToken : refreshToken ,
181- TokenType : defaultTokenType ,
176+ AccessToken : accessToken ,
177+ ExpiresIn : int (exp .Time .Unix ()),
178+ Scope : defaultScope ,
179+ TokenType : defaultTokenType ,
182180 }
183181 c .tokenMutex .Unlock ()
184182 return nil
@@ -198,7 +196,7 @@ func (c *KeyFlow) RoundTrip(req *http.Request) (*http.Response, error) {
198196 return c .rt .RoundTrip (req )
199197}
200198
201- // GetAccessToken returns a short-lived access token and saves the access and refresh tokens in the token field
199+ // GetAccessToken returns a short-lived access token and saves the access token in the token field
202200func (c * KeyFlow ) GetAccessToken () (string , error ) {
203201 if c .rt == nil {
204202 return "" , fmt .Errorf ("nil http round tripper, please run Init()" )
@@ -219,7 +217,7 @@ func (c *KeyFlow) GetAccessToken() (string, error) {
219217 if ! accessTokenExpired {
220218 return accessToken , nil
221219 }
222- if err = c .recreateAccessToken (); err != nil {
220+ if err = c .createAccessToken (); err != nil {
223221 var oapiErr * oapierror.GenericOpenAPIError
224222 if ok := errors .As (err , & oapiErr ); ok {
225223 reg := regexp .MustCompile ("Key with kid .*? was not found" )
@@ -269,27 +267,6 @@ func (c *KeyFlow) validate() error {
269267
270268// Flow auth functions
271269
272- // recreateAccessToken is used to create a new access token
273- // when the existing one isn't valid anymore
274- func (c * KeyFlow ) recreateAccessToken () error {
275- var refreshToken string
276-
277- c .tokenMutex .RLock ()
278- if c .token != nil {
279- refreshToken = c .token .RefreshToken
280- }
281- c .tokenMutex .RUnlock ()
282-
283- refreshTokenExpired , err := tokenExpired (refreshToken , c .tokenExpirationLeeway )
284- if err != nil {
285- return err
286- }
287- if ! refreshTokenExpired {
288- return c .createAccessTokenWithRefreshToken ()
289- }
290- return c .createAccessToken ()
291- }
292-
293270// createAccessToken creates an access token using self signed JWT
294271func (c * KeyFlow ) createAccessToken () (err error ) {
295272 grant := "urn:ietf:params:oauth:grant-type:jwt-bearer"
@@ -310,26 +287,6 @@ func (c *KeyFlow) createAccessToken() (err error) {
310287 return c .parseTokenResponse (res )
311288}
312289
313- // createAccessTokenWithRefreshToken creates an access token using
314- // an existing pre-validated refresh token
315- func (c * KeyFlow ) createAccessTokenWithRefreshToken () (err error ) {
316- c .tokenMutex .RLock ()
317- refreshToken := c .token .RefreshToken
318- c .tokenMutex .RUnlock ()
319-
320- res , err := c .requestToken ("refresh_token" , refreshToken )
321- if err != nil {
322- return err
323- }
324- defer func () {
325- tempErr := res .Body .Close ()
326- if tempErr != nil && err == nil {
327- err = fmt .Errorf ("close request access token with refresh token response: %w" , tempErr )
328- }
329- }()
330- return c .parseTokenResponse (res )
331- }
332-
333290// generateSelfSignedJWT generates JWT token
334291func (c * KeyFlow ) generateSelfSignedJWT () (string , error ) {
335292 claims := jwt.MapClaims {
@@ -353,11 +310,8 @@ func (c *KeyFlow) generateSelfSignedJWT() (string, error) {
353310func (c * KeyFlow ) requestToken (grant , assertion string ) (* http.Response , error ) {
354311 body := url.Values {}
355312 body .Set ("grant_type" , grant )
356- if grant == "refresh_token" {
357- body .Set ("refresh_token" , assertion )
358- } else {
359- body .Set ("assertion" , assertion )
360- }
313+ body .Set ("assertion" , assertion )
314+
361315 payload := strings .NewReader (body .Encode ())
362316 req , err := http .NewRequest (http .MethodPost , c .config .TokenUrl , payload )
363317 if err != nil {
0 commit comments