Skip to content

Commit

Permalink
sso_auth: fix okta revoke endpoint
Browse files Browse the repository at this point in the history
- Fix client authorisation
- Revoke refresh token, implicitly revoking access token as well
  • Loading branch information
Jusshersmith committed Jun 24, 2019
1 parent 568049a commit d0ca898
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions internal/auth/providers/okta.go
Original file line number Diff line number Diff line change
Expand Up @@ -413,20 +413,25 @@ func (p *OktaProvider) RefreshAccessToken(refreshToken string) (token string, ex
return
}

// Revoke revokes the access token a given session state.
// Revoke revokes the refresh token from a given session state.
// Revoking the refresh token implicitly revokes the access token, forcing re-authentication.
// https://developer.okta.com/docs/guides/revoke-tokens/overview/
func (p *OktaProvider) Revoke(s *sessions.SessionState) error {
// https://developer.okta.com/docs/api/resources/oidc/#revoke
params := url.Values{}
params.Add("client_id", p.ClientID)
params.Add("token", s.AccessToken)

err := p.oktaRequest("POST", p.RevokeURL.String(), params, []string{"action:revoke"}, nil, nil)
form := url.Values{}
form.Add("token", s.RefreshToken)
form.Add("token_type_hint", "refresh_token")
form.Add("client_id", p.ClientID)
form.Add("client_secret", p.ClientSecret)

err := p.oktaRequest("POST", p.RevokeURL.String(), form, []string{"action:revoke"}, nil, nil)

if err != nil && err != ErrTokenRevoked {
return err
}
logger := log.NewLogEntry()

logger.WithUser(s.Email).Info("revoked access token")
logger.WithUser(s.Email).Info("revoked refresh and access token")
return nil
}

0 comments on commit d0ca898

Please sign in to comment.