Browse Source

Merge pull request #1861 from concourse/pr/bcrypt-for-client-secret-sync

Use constant time comparison for client secret verification
pull/2131/head
Márk Sági-Kazár 5 years ago committed by GitHub
parent
commit
18d1f70cee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      server/handlers.go
  2. 1
      server/server.go

4
server/handlers.go

@ -2,6 +2,7 @@ package server
import (
"crypto/sha256"
"crypto/subtle"
"encoding/base64"
"encoding/json"
"fmt"
@ -678,7 +679,8 @@ func (s *Server) withClientFromStorage(w http.ResponseWriter, r *http.Request, h
}
return
}
if client.Secret != clientSecret {
if subtle.ConstantTimeCompare([]byte(client.Secret), []byte(clientSecret)) != 1 {
if clientSecret == "" {
s.logger.Infof("missing client_secret on token request for client: %s", client.ID)
} else {

1
server/server.go

@ -204,6 +204,7 @@ func newServer(ctx context.Context, c Config, rotationStrategy rotationStrategy)
if c.Storage == nil {
return nil, errors.New("server: storage cannot be nil")
}
if len(c.SupportedResponseTypes) == 0 {
c.SupportedResponseTypes = []string{responseTypeCode}
}

Loading…
Cancel
Save