Skip to content

Commit

Permalink
auth: fix error token expired (#1505)
Browse files Browse the repository at this point in the history
* Broker Docs

* Reorganize Broker

* auth: fix error auth token expired

* Remove Docs

* Fix
  • Loading branch information
ben-toogood committed Oct 16, 2020
1 parent 28274ed commit f7d9535
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 3 deletions.
12 changes: 11 additions & 1 deletion cmd/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,17 @@ func refreshAuthToken() {
auth.WithToken(tok.RefreshToken),
auth.WithExpiry(time.Minute*10),
)
if err != nil {
if err == auth.ErrInvalidToken {
logger.Warnf("[Auth] Refresh token expired, regenerating using account credentials")

tok, err = auth.Token(
auth.WithCredentials(
auth.DefaultAuth.Options().ID,
auth.DefaultAuth.Options().Secret,
),
auth.WithExpiry(time.Minute*10),
)
} else if err != nil {
logger.Warnf("[Auth] Error refreshing token: %v", err)
continue
}
Expand Down
5 changes: 4 additions & 1 deletion service/auth/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/micro/micro/v3/service/client"
"github.com/micro/micro/v3/service/client/cache"
"github.com/micro/micro/v3/service/context"
"github.com/micro/micro/v3/service/errors"
)

// srv is the service implementation of the Auth interface
Expand Down Expand Up @@ -235,7 +236,9 @@ func (s *srv) Token(opts ...auth.TokenOption) (*auth.AccountToken, error) {
Namespace: options.Issuer,
},
}, s.callOpts()...)
if err != nil {
if err != nil && errors.FromError(err).Detail == auth.ErrInvalidToken.Error() {
return nil, auth.ErrInvalidToken
} else if err != nil {
return nil, err
}

Expand Down
2 changes: 1 addition & 1 deletion service/auth/server/auth/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ func (a *Auth) Token(ctx context.Context, req *pb.TokenRequest, rsp *pb.TokenRes
if len(req.RefreshToken) > 0 {
accID, err := a.accountIDForRefreshToken(req.Options.Namespace, req.RefreshToken)
if err == store.ErrNotFound {
return errors.BadRequest("auth.Auth.Token", "Account can't be found for refresh token")
return errors.BadRequest("auth.Auth.Token", auth.ErrInvalidToken.Error())
} else if err != nil {
return errors.InternalServerError("auth.Auth.Token", "Unable to lookup token: %v", err)
}
Expand Down

0 comments on commit f7d9535

Please sign in to comment.