Skip to content
This repository has been archived by the owner on Dec 7, 2020. It is now read-only.

Commit

Permalink
KEYCLOAK-12731 Add option 'UseAuthorizationHeader' to disable reading…
Browse files Browse the repository at this point in the history
… token from Authorization header

This makes it possible to protect applications with the gatekeeper which use the Authorization header with their own JWT token. Default of this value is true (backward compatible).
  • Loading branch information
phxql committed Jan 20, 2020
1 parent 29e8620 commit 7c14c0f
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 11 deletions.
1 change: 1 addition & 0 deletions config.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ func newDefaultConfig() *Config {
ClientAuthMethod: authMethodBasic,
CookieAccessName: accessCookie,
CookieRefreshName: refreshCookie,
UseAuthorizationHeader: true,
EnableAuthorizationCookies: true,
EnableAuthorizationHeader: true,
EnableDefaultDeny: true,
Expand Down
3 changes: 3 additions & 0 deletions doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,9 @@ type Config struct {
// ResponseHeader is a map of response headers to add to the response
ResponseHeaders map[string]string `json:"response-headers" yaml:"response-headers" usage:"custom headers to added to the http response key=value"`

// UseAuthorizationHeader indicates if we should read the token from the Authorization header
UseAuthorizationHeader bool `json:"use-authorization-header" yaml:"use-authorization-header" usage:"indicates if we should read token from Authorization header" env:"USE_AUTHORIZATION_HEADER"`

// EnableSelfSignedTLS indicates we should create a self-signed ceritificate for the service
EnabledSelfSignedTLS bool `json:"enable-self-signed-tls" yaml:"enable-self-signed-tls" usage:"create self signed certificates for the proxy" env:"ENABLE_SELF_SIGNED_TLS"`
// SelfSignedTLSHostnames is the list of hostnames to place on the certificate
Expand Down
29 changes: 19 additions & 10 deletions session.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import (
func (r *oauthProxy) getIdentity(req *http.Request) (*userContext, error) {
var isBearer bool
// step: check for a bearer token or cookie with jwt token
access, isBearer, err := getTokenInRequest(req, r.config.CookieAccessName)
access, isBearer, err := getTokenInRequest(req, r.config.CookieAccessName, r.config.UseAuthorizationHeader)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -69,18 +69,27 @@ func (r *oauthProxy) getRefreshTokenFromCookie(req *http.Request) (string, error
}

// getTokenInRequest returns the access token from the http request
func getTokenInRequest(req *http.Request, name string) (string, bool, error) {
func getTokenInRequest(req *http.Request, name string, useAuthorizationHeader bool) (string, bool, error) {
bearer := true
// step: check for a token in the authorization header
token, err := getTokenInBearer(req)
if err != nil {
if err != ErrSessionNotFound {
return "", false, err
}
if token, err = getTokenInCookie(req, name); err != nil {
return token, false, err
var token string
if useAuthorizationHeader {
// step: check for a token in the authorization header
token, err := getTokenInBearer(req)
if err != nil {
bearer = false
if err != ErrSessionNotFound {
return "", bearer, err
}
if token, err = getTokenInCookie(req, name); err != nil {
return token, bearer, err
}
}
} else {
// step: check for a token in cookie
bearer = false
if token, err := getTokenInCookie(req, name); err != nil {
return token, bearer, err
}
}

return token, bearer, nil
Expand Down
2 changes: 1 addition & 1 deletion session_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ func TestGetTokenInRequest(t *testing.T) {
})
}
}
access, bearer, err := getTokenInRequest(req, defaultName)
access, bearer, err := getTokenInRequest(req, defaultName, true)
switch x.Error {
case nil:
assert.NoError(t, err, "case %d should not have thrown an error", i)
Expand Down

0 comments on commit 7c14c0f

Please sign in to comment.