Merge branch 'master' into go-mod
This commit is contained in:
		
						commit
						56f51417ae
					
				
							
								
								
									
										20
									
								
								CHANGELOG.md
								
								
								
								
							
							
						
						
									
										20
									
								
								CHANGELOG.md
								
								
								
								
							|  | @ -2,6 +2,23 @@ | |||
| 
 | ||||
| ## Breaking Changes | ||||
| 
 | ||||
| - [#186](https://github.com/pusher/oauth2_proxy/pull/186) Make config consistent | ||||
|   - This PR changes configuration options so that all flags have a config counterpart | ||||
|   of the same name but with underscores (`_`) in place of hyphens (`-`). | ||||
|   This change affects the following flags: | ||||
|   - The `--tls-key` flag is now `--tls-key-file` to be consistent with existing | ||||
|   file flags and the existing config and environment settings | ||||
|   - The `--tls-cert` flag is now `--tls-cert-file` to be consistent with existing | ||||
|   file flags and the existing config and environment settings | ||||
|   This change affects the following existing configuration options: | ||||
|   - The `proxy-prefix` option is now `proxy_prefix`. | ||||
|   This PR changes environment variables so that all flags have an environment | ||||
|   counterpart of the same name but capitalised, with underscores (`_`) in place | ||||
|   of hyphens (`-`) and with the prefix `OAUTH2_PROXY_`. | ||||
|   This change affects the following existing environment variables: | ||||
|   - The `OAUTH2_SKIP_OIDC_DISCOVERY` environment variable is now `OAUTH2_PROXY_SKIP_OIDC_DISCOVERY`. | ||||
|   - The `OAUTH2_OIDC_JWKS_URL` environment variable is now `OAUTH2_PROXY_OIDC_JWKS_URL`. | ||||
| 
 | ||||
| - [#146](https://github.com/pusher/oauth2_proxy/pull/146) Use full email address as `User` if the auth response did not contain a `User` field (@gargath) | ||||
|   - This change modifies the contents of the `X-Forwarded-User` header supplied by the proxy for users where the auth response from the IdP did not contain | ||||
|     a username. | ||||
|  | @ -14,6 +31,8 @@ | |||
| 
 | ||||
| ## Changes since v3.2.0 | ||||
| 
 | ||||
| - [#186](https://github.com/pusher/oauth2_proxy/pull/186) Make config consistent (@JoelSpeed) | ||||
| - [#187](https://github.com/pusher/oauth2_proxy/pull/187) Move root packages to pkg folder (@JoelSpeed) | ||||
| - [#65](https://github.com/pusher/oauth2_proxy/pull/65) Improvements to authenticate requests with a JWT bearer token in the `Authorization` header via | ||||
|   the `-skip-jwt-bearer-token` options. | ||||
|   - Additional verifiers can be configured via the `-extra-jwt-issuers` flag if the JWT issuers is either an OpenID provider or has a JWKS URL | ||||
|  | @ -65,6 +84,7 @@ | |||
| - [#195](https://github.com/pusher/outh2_proxy/pull/195) Add `-banner` flag for overriding the banner line that is displayed (@steakunderscore) | ||||
| - [#198](https://github.com/pusher/outh2_proxy/pull/198) Switch from gometalinter to golangci-lint (@steakunderscore) | ||||
| - [#159](https://github.com/pusher/oauth2_proxy/pull/159) Add option to skip the OIDC provider verified email check: `--insecure-oidc-allow-unverified-email` | ||||
| - [#210](https://github.com/pusher/oauth2_proxy/pull/210) Update base image from Alpine 3.9 to 3.10 (@steakunderscore) | ||||
| - [#211](https://github.com/pusher/oauth2_proxy/pull/211) Switch from dep to go modules (@steakunderscore) | ||||
| 
 | ||||
| # v3.2.0 | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ RUN go mod download | |||
| RUN ./configure && make build && touch jwt_signing_key.pem | ||||
| 
 | ||||
| # Copy binary to alpine | ||||
| FROM alpine:3.9 | ||||
| FROM alpine:3.10 | ||||
| COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt | ||||
| COPY --from=builder /go/src/github.com/pusher/oauth2_proxy/oauth2_proxy /bin/oauth2_proxy | ||||
| COPY --from=builder /go/src/github.com/pusher/oauth2_proxy/jwt_signing_key.pem /etc/ssl/private/jwt_signing_key.pem | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ RUN go mod download | |||
| RUN ./configure && GOARCH=arm64 make build && touch jwt_signing_key.pem | ||||
| 
 | ||||
| # Copy binary to alpine | ||||
| FROM arm64v8/alpine:3.9 | ||||
| FROM arm64v8/alpine:3.10 | ||||
| COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt | ||||
| COPY --from=builder /go/src/github.com/pusher/oauth2_proxy/oauth2_proxy /bin/oauth2_proxy | ||||
| COPY --from=builder /go/src/github.com/pusher/oauth2_proxy/jwt_signing_key.pem /etc/ssl/private/jwt_signing_key.pem | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ RUN go mod download | |||
| RUN ./configure && GOARCH=arm GOARM=6 make build && touch jwt_signing_key.pem | ||||
| 
 | ||||
| # Copy binary to alpine | ||||
| FROM arm32v6/alpine:3.9 | ||||
| FROM arm32v6/alpine:3.10 | ||||
| COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt | ||||
| COPY --from=builder /go/src/github.com/pusher/oauth2_proxy/oauth2_proxy /bin/oauth2_proxy | ||||
| COPY --from=builder /go/src/github.com/pusher/oauth2_proxy/jwt_signing_key.pem /etc/ssl/private/jwt_signing_key.pem | ||||
|  |  | |||
|  | @ -120,17 +120,14 @@ Multiple upstreams can either be configured by supplying a comma separated list | |||
| 
 | ||||
| ### Environment variables | ||||
| 
 | ||||
| The following environment variables can be used in place of the corresponding command-line arguments: | ||||
| Every command line argument can be specified as an environment variable by | ||||
| prefixing it with `OAUTH2_PROXY_`, capitalising it, and replacing hypens (`-`) | ||||
| with underscores (`_`). This is particularly useful for storing secrets outside | ||||
| of a configuration file or the command line. | ||||
| 
 | ||||
| For example, the `--cookie-secret` flag becomes `OAUTH2_PROXY_COOKIE_SECRET` and | ||||
| the `--set-authorization-header` flag becomes `OAUTH2_PROXY_SET_AUTHORIZATION_HEADER`. | ||||
| 
 | ||||
| - `OAUTH2_PROXY_CLIENT_ID` | ||||
| - `OAUTH2_PROXY_CLIENT_SECRET` | ||||
| - `OAUTH2_PROXY_COOKIE_NAME` | ||||
| - `OAUTH2_PROXY_COOKIE_SECRET` | ||||
| - `OAUTH2_PROXY_COOKIE_DOMAIN` | ||||
| - `OAUTH2_PROXY_COOKIE_PATH` | ||||
| - `OAUTH2_PROXY_COOKIE_EXPIRE` | ||||
| - `OAUTH2_PROXY_COOKIE_REFRESH` | ||||
| - `OAUTH2_PROXY_SIGNATURE_KEY` | ||||
| 
 | ||||
| ## Logging Configuration | ||||
| 
 | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import ( | |||
| 	"io" | ||||
| 	"os" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| 	"golang.org/x/crypto/bcrypt" | ||||
| ) | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										2
									
								
								http.go
								
								
								
								
							
							
						
						
									
										2
									
								
								http.go
								
								
								
								
							|  | @ -7,7 +7,7 @@ import ( | |||
| 	"strings" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| ) | ||||
| 
 | ||||
| // Server represents an HTTP server
 | ||||
|  |  | |||
|  | @ -10,7 +10,7 @@ import ( | |||
| 	"net/http" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| ) | ||||
| 
 | ||||
| // responseLogger is wrapper of http.ResponseWriter that keeps track of its HTTP status
 | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ import ( | |||
| 	"testing" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| ) | ||||
| 
 | ||||
| func TestLoggingHandler_ServeHTTP(t *testing.T) { | ||||
|  |  | |||
							
								
								
									
										2
									
								
								main.go
								
								
								
								
							
							
						
						
									
										2
									
								
								main.go
								
								
								
								
							|  | @ -12,7 +12,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/BurntSushi/toml" | ||||
| 	options "github.com/mreiferson/go-options" | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| ) | ||||
| 
 | ||||
| func main() { | ||||
|  |  | |||
|  | @ -16,9 +16,9 @@ import ( | |||
| 
 | ||||
| 	"github.com/coreos/go-oidc" | ||||
| 	"github.com/mbland/hmacauth" | ||||
| 	"github.com/pusher/oauth2_proxy/cookie" | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	sessionsapi "github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/encryption" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/providers" | ||||
| 	"github.com/yhat/wsutil" | ||||
| ) | ||||
|  | @ -584,7 +584,7 @@ func (p *OAuthProxy) SignOut(rw http.ResponseWriter, req *http.Request) { | |||
| 
 | ||||
| // OAuthStart starts the OAuth2 authentication flow
 | ||||
| func (p *OAuthProxy) OAuthStart(rw http.ResponseWriter, req *http.Request) { | ||||
| 	nonce, err := cookie.Nonce() | ||||
| 	nonce, err := encryption.Nonce() | ||||
| 	if err != nil { | ||||
| 		logger.Printf("Error obtaining nonce: %s", err.Error()) | ||||
| 		p.ErrorPage(rw, 500, "Internal Error", err.Error()) | ||||
|  |  | |||
|  | @ -18,8 +18,8 @@ import ( | |||
| 
 | ||||
| 	"github.com/coreos/go-oidc" | ||||
| 	"github.com/mbland/hmacauth" | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/sessions/cookie" | ||||
| 	"github.com/pusher/oauth2_proxy/providers" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
|  |  | |||
							
								
								
									
										42
									
								
								options.go
								
								
								
								
							
							
						
						
									
										42
									
								
								options.go
								
								
								
								
							|  | @ -17,10 +17,10 @@ import ( | |||
| 	oidc "github.com/coreos/go-oidc" | ||||
| 	"github.com/dgrijalva/jwt-go" | ||||
| 	"github.com/mbland/hmacauth" | ||||
| 	"github.com/pusher/oauth2_proxy/cookie" | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/options" | ||||
| 	sessionsapi "github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/encryption" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/providers" | ||||
| 	"gopkg.in/natefinch/lumberjack.v2" | ||||
|  | @ -29,15 +29,15 @@ import ( | |||
| // Options holds Configuration Options that can be set by Command Line Flag,
 | ||||
| // or Config File
 | ||||
| type Options struct { | ||||
| 	ProxyPrefix     string `flag:"proxy-prefix" cfg:"proxy-prefix" env:"OAUTH2_PROXY_PROXY_PREFIX"` | ||||
| 	ProxyPrefix     string `flag:"proxy-prefix" cfg:"proxy_prefix" env:"OAUTH2_PROXY_PROXY_PREFIX"` | ||||
| 	ProxyWebSockets bool   `flag:"proxy-websockets" cfg:"proxy_websockets" env:"OAUTH2_PROXY_PROXY_WEBSOCKETS"` | ||||
| 	HTTPAddress     string `flag:"http-address" cfg:"http_address" env:"OAUTH2_PROXY_HTTP_ADDRESS"` | ||||
| 	HTTPSAddress    string `flag:"https-address" cfg:"https_address" env:"OAUTH2_PROXY_HTTPS_ADDRESS"` | ||||
| 	RedirectURL     string `flag:"redirect-url" cfg:"redirect_url" env:"OAUTH2_PROXY_REDIRECT_URL"` | ||||
| 	ClientID        string `flag:"client-id" cfg:"client_id" env:"OAUTH2_PROXY_CLIENT_ID"` | ||||
| 	ClientSecret    string `flag:"client-secret" cfg:"client_secret" env:"OAUTH2_PROXY_CLIENT_SECRET"` | ||||
| 	TLSCertFile     string `flag:"tls-cert" cfg:"tls_cert_file" env:"OAUTH2_PROXY_TLS_CERT_FILE"` | ||||
| 	TLSKeyFile      string `flag:"tls-key" cfg:"tls_key_file" env:"OAUTH2_PROXY_TLS_KEY_FILE"` | ||||
| 	TLSCertFile     string `flag:"tls-cert-file" cfg:"tls_cert_file" env:"OAUTH2_PROXY_TLS_CERT_FILE"` | ||||
| 	TLSKeyFile      string `flag:"tls-key-file" cfg:"tls_key_file" env:"OAUTH2_PROXY_TLS_KEY_FILE"` | ||||
| 
 | ||||
| 	AuthenticatedEmailsFile  string   `flag:"authenticated-emails-file" cfg:"authenticated_emails_file" env:"OAUTH2_PROXY_AUTHENTICATED_EMAILS_FILE"` | ||||
| 	AzureTenant              string   `flag:"azure-tenant" cfg:"azure_tenant" env:"OAUTH2_PROXY_AZURE_TENANT"` | ||||
|  | @ -82,8 +82,8 @@ type Options struct { | |||
| 	Provider                         string `flag:"provider" cfg:"provider" env:"OAUTH2_PROXY_PROVIDER"` | ||||
| 	OIDCIssuerURL                    string `flag:"oidc-issuer-url" cfg:"oidc_issuer_url" env:"OAUTH2_PROXY_OIDC_ISSUER_URL"` | ||||
| 	InsecureOIDCAllowUnverifiedEmail bool   `flag:"insecure-oidc-allow-unverified-email" cfg:"insecure_oidc_allow_unverified_email" env:"OAUTH2_PROXY_INSECURE_OIDC_ALLOW_UNVERIFIED_EMAIL"` | ||||
| 	SkipOIDCDiscovery                bool   `flag:"skip-oidc-discovery" cfg:"skip_oidc_discovery" env:"OAUTH2_SKIP_OIDC_DISCOVERY"` | ||||
| 	OIDCJwksURL                      string `flag:"oidc-jwks-url" cfg:"oidc_jwks_url" env:"OAUTH2_OIDC_JWKS_URL"` | ||||
| 	SkipOIDCDiscovery                bool   `flag:"skip-oidc-discovery" cfg:"skip_oidc_discovery" env:"OAUTH2_PROXY_SKIP_OIDC_DISCOVERY"` | ||||
| 	OIDCJwksURL                      string `flag:"oidc-jwks-url" cfg:"oidc_jwks_url" env:"OAUTH2_PROXY_OIDC_JWKS_URL"` | ||||
| 	LoginURL                         string `flag:"login-url" cfg:"login_url" env:"OAUTH2_PROXY_LOGIN_URL"` | ||||
| 	RedeemURL                        string `flag:"redeem-url" cfg:"redeem_url" env:"OAUTH2_PROXY_REDEEM_URL"` | ||||
| 	ProfileURL                       string `flag:"profile-url" cfg:"profile_url" env:"OAUTH2_PROXY_PROFILE_URL"` | ||||
|  | @ -93,18 +93,18 @@ type Options struct { | |||
| 	ApprovalPrompt                   string `flag:"approval-prompt" cfg:"approval_prompt" env:"OAUTH2_PROXY_APPROVAL_PROMPT"` | ||||
| 
 | ||||
| 	// Configuration values for logging
 | ||||
| 	LoggingFilename       string `flag:"logging-filename" cfg:"logging_filename" env:"OAUTH2_LOGGING_FILENAME"` | ||||
| 	LoggingMaxSize        int    `flag:"logging-max-size" cfg:"logging_max_size" env:"OAUTH2_LOGGING_MAX_SIZE"` | ||||
| 	LoggingMaxAge         int    `flag:"logging-max-age" cfg:"logging_max_age" env:"OAUTH2_LOGGING_MAX_AGE"` | ||||
| 	LoggingMaxBackups     int    `flag:"logging-max-backups" cfg:"logging_max_backups" env:"OAUTH2_LOGGING_MAX_BACKUPS"` | ||||
| 	LoggingLocalTime      bool   `flag:"logging-local-time" cfg:"logging_local_time" env:"OAUTH2_LOGGING_LOCAL_TIME"` | ||||
| 	LoggingCompress       bool   `flag:"logging-compress" cfg:"logging_compress" env:"OAUTH2_LOGGING_COMPRESS"` | ||||
| 	StandardLogging       bool   `flag:"standard-logging" cfg:"standard_logging" env:"OAUTH2_STANDARD_LOGGING"` | ||||
| 	StandardLoggingFormat string `flag:"standard-logging-format" cfg:"standard_logging_format" env:"OAUTH2_STANDARD_LOGGING_FORMAT"` | ||||
| 	RequestLogging        bool   `flag:"request-logging" cfg:"request_logging" env:"OAUTH2_REQUEST_LOGGING"` | ||||
| 	RequestLoggingFormat  string `flag:"request-logging-format" cfg:"request_logging_format" env:"OAUTH2_REQUEST_LOGGING_FORMAT"` | ||||
| 	AuthLogging           bool   `flag:"auth-logging" cfg:"auth_logging" env:"OAUTH2_LOGGING_AUTH_LOGGING"` | ||||
| 	AuthLoggingFormat     string `flag:"auth-logging-format" cfg:"auth_logging_format" env:"OAUTH2_AUTH_LOGGING_FORMAT"` | ||||
| 	LoggingFilename       string `flag:"logging-filename" cfg:"logging_filename" env:"OAUTH2_PROXY_LOGGING_FILENAME"` | ||||
| 	LoggingMaxSize        int    `flag:"logging-max-size" cfg:"logging_max_size" env:"OAUTH2_PROXY_LOGGING_MAX_SIZE"` | ||||
| 	LoggingMaxAge         int    `flag:"logging-max-age" cfg:"logging_max_age" env:"OAUTH2_PROXY_LOGGING_MAX_AGE"` | ||||
| 	LoggingMaxBackups     int    `flag:"logging-max-backups" cfg:"logging_max_backups" env:"OAUTH2_PROXY_LOGGING_MAX_BACKUPS"` | ||||
| 	LoggingLocalTime      bool   `flag:"logging-local-time" cfg:"logging_local_time" env:"OAUTH2_PROXY_LOGGING_LOCAL_TIME"` | ||||
| 	LoggingCompress       bool   `flag:"logging-compress" cfg:"logging_compress" env:"OAUTH2_PROXY_LOGGING_COMPRESS"` | ||||
| 	StandardLogging       bool   `flag:"standard-logging" cfg:"standard_logging" env:"OAUTH2_PROXY_STANDARD_LOGGING"` | ||||
| 	StandardLoggingFormat string `flag:"standard-logging-format" cfg:"standard_logging_format" env:"OAUTH2_PROXY_STANDARD_LOGGING_FORMAT"` | ||||
| 	RequestLogging        bool   `flag:"request-logging" cfg:"request_logging" env:"OAUTH2_PROXY_REQUEST_LOGGING"` | ||||
| 	RequestLoggingFormat  string `flag:"request-logging-format" cfg:"request_logging_format" env:"OAUTH2_PROXY_REQUEST_LOGGING_FORMAT"` | ||||
| 	AuthLogging           bool   `flag:"auth-logging" cfg:"auth_logging" env:"OAUTH2_PROXY_LOGGING_AUTH_LOGGING"` | ||||
| 	AuthLoggingFormat     string `flag:"auth-logging-format" cfg:"auth_logging_format" env:"OAUTH2_PROXY_AUTH_LOGGING_FORMAT"` | ||||
| 
 | ||||
| 	SignatureKey    string `flag:"signature-key" cfg:"signature_key" env:"OAUTH2_PROXY_SIGNATURE_KEY"` | ||||
| 	AcrValues       string `flag:"acr-values" cfg:"acr_values" env:"OAUTH2_PROXY_ACR_VALUES"` | ||||
|  | @ -299,7 +299,7 @@ func (o *Options) Validate() error { | |||
| 	} | ||||
| 	msgs = parseProviderInfo(o, msgs) | ||||
| 
 | ||||
| 	var cipher *cookie.Cipher | ||||
| 	var cipher *encryption.Cipher | ||||
| 	if o.PassAccessToken || o.SetAuthorization || o.PassAuthorization || (o.CookieRefresh != time.Duration(0)) { | ||||
| 		validCookieSecretSize := false | ||||
| 		for _, i := range []int{16, 24, 32} { | ||||
|  | @ -324,7 +324,7 @@ func (o *Options) Validate() error { | |||
| 				len(secretBytes(o.CookieSecret)), suffix)) | ||||
| 		} else { | ||||
| 			var err error | ||||
| 			cipher, err = cookie.NewCipher(secretBytes(o.CookieSecret)) | ||||
| 			cipher, err = encryption.NewCipher(secretBytes(o.CookieSecret)) | ||||
| 			if err != nil { | ||||
| 				msgs = append(msgs, fmt.Sprintf("cookie-secret error: %v", err)) | ||||
| 			} | ||||
|  |  | |||
|  | @ -1,13 +1,11 @@ | |||
| package options | ||||
| 
 | ||||
| import ( | ||||
| 	"github.com/pusher/oauth2_proxy/cookie" | ||||
| ) | ||||
| import "github.com/pusher/oauth2_proxy/pkg/encryption" | ||||
| 
 | ||||
| // SessionOptions contains configuration options for the SessionStore providers.
 | ||||
| type SessionOptions struct { | ||||
| 	Type   string `flag:"session-store-type" cfg:"session_store_type" env:"OAUTH2_PROXY_SESSION_STORE_TYPE"` | ||||
| 	Cipher *cookie.Cipher | ||||
| 	Cipher *encryption.Cipher | ||||
| 	CookieStoreOptions | ||||
| 	RedisStoreOptions | ||||
| } | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import ( | |||
| 	"strings" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/cookie" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/encryption" | ||||
| ) | ||||
| 
 | ||||
| // SessionState is used to store information about the currently authenticated user session
 | ||||
|  | @ -66,7 +66,7 @@ func (s *SessionState) String() string { | |||
| } | ||||
| 
 | ||||
| // EncodeSessionState returns string representation of the current session
 | ||||
| func (s *SessionState) EncodeSessionState(c *cookie.Cipher) (string, error) { | ||||
| func (s *SessionState) EncodeSessionState(c *encryption.Cipher) (string, error) { | ||||
| 	var ss SessionState | ||||
| 	if c == nil { | ||||
| 		// Store only Email and User when cipher is unavailable
 | ||||
|  | @ -133,7 +133,7 @@ func legacyDecodeSessionStatePlain(v string) (*SessionState, error) { | |||
| 
 | ||||
| // legacyDecodeSessionState attempts to decode the session state string
 | ||||
| // generated by v3.1.0 or older
 | ||||
| func legacyDecodeSessionState(v string, c *cookie.Cipher) (*SessionState, error) { | ||||
| func legacyDecodeSessionState(v string, c *encryption.Cipher) (*SessionState, error) { | ||||
| 	chunks := strings.Split(v, "|") | ||||
| 
 | ||||
| 	if c == nil { | ||||
|  | @ -176,7 +176,7 @@ func legacyDecodeSessionState(v string, c *cookie.Cipher) (*SessionState, error) | |||
| } | ||||
| 
 | ||||
| // DecodeSessionState decodes the session cookie string into a SessionState
 | ||||
| func DecodeSessionState(v string, c *cookie.Cipher) (*SessionState, error) { | ||||
| func DecodeSessionState(v string, c *encryption.Cipher) (*SessionState, error) { | ||||
| 	var ssj SessionStateJSON | ||||
| 	var ss *SessionState | ||||
| 	err := json.Unmarshal([]byte(v), &ssj) | ||||
|  |  | |||
|  | @ -5,8 +5,8 @@ import ( | |||
| 	"testing" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/cookie" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/encryption" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
| 
 | ||||
|  | @ -14,9 +14,9 @@ const secret = "0123456789abcdefghijklmnopqrstuv" | |||
| const altSecret = "0000000000abcdefghijklmnopqrstuv" | ||||
| 
 | ||||
| func TestSessionStateSerialization(t *testing.T) { | ||||
| 	c, err := cookie.NewCipher([]byte(secret)) | ||||
| 	c, err := encryption.NewCipher([]byte(secret)) | ||||
| 	assert.Equal(t, nil, err) | ||||
| 	c2, err := cookie.NewCipher([]byte(altSecret)) | ||||
| 	c2, err := encryption.NewCipher([]byte(altSecret)) | ||||
| 	assert.Equal(t, nil, err) | ||||
| 	s := &sessions.SessionState{ | ||||
| 		Email:        "user@domain.com", | ||||
|  | @ -54,9 +54,9 @@ func TestSessionStateSerialization(t *testing.T) { | |||
| } | ||||
| 
 | ||||
| func TestSessionStateSerializationWithUser(t *testing.T) { | ||||
| 	c, err := cookie.NewCipher([]byte(secret)) | ||||
| 	c, err := encryption.NewCipher([]byte(secret)) | ||||
| 	assert.Equal(t, nil, err) | ||||
| 	c2, err := cookie.NewCipher([]byte(altSecret)) | ||||
| 	c2, err := encryption.NewCipher([]byte(altSecret)) | ||||
| 	assert.Equal(t, nil, err) | ||||
| 	s := &sessions.SessionState{ | ||||
| 		User:         "just-user", | ||||
|  | @ -146,7 +146,7 @@ func TestExpired(t *testing.T) { | |||
| type testCase struct { | ||||
| 	sessions.SessionState | ||||
| 	Encoded string | ||||
| 	Cipher  *cookie.Cipher | ||||
| 	Cipher  *encryption.Cipher | ||||
| 	Error   bool | ||||
| } | ||||
| 
 | ||||
|  | @ -203,7 +203,7 @@ func TestDecodeSessionState(t *testing.T) { | |||
| 	eString := string(eJSON) | ||||
| 	eUnix := e.Unix() | ||||
| 
 | ||||
| 	c, err := cookie.NewCipher([]byte(secret)) | ||||
| 	c, err := encryption.NewCipher([]byte(secret)) | ||||
| 	assert.NoError(t, err) | ||||
| 
 | ||||
| 	testCases := []testCase{ | ||||
|  |  | |||
|  | @ -6,8 +6,8 @@ import ( | |||
| 	"strings" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/options" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| ) | ||||
| 
 | ||||
| // MakeCookie constructs a cookie from the given parameters,
 | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| package cookie | ||||
| package encryption | ||||
| 
 | ||||
| import ( | ||||
| 	"crypto/aes" | ||||
|  | @ -1,4 +1,4 @@ | |||
| package cookie | ||||
| package encryption | ||||
| 
 | ||||
| import ( | ||||
| 	"encoding/base64" | ||||
|  | @ -1,4 +1,4 @@ | |||
| package cookie | ||||
| package encryption | ||||
| 
 | ||||
| import ( | ||||
| 	"crypto/rand" | ||||
|  | @ -1,4 +1,4 @@ | |||
| package api | ||||
| package requests | ||||
| 
 | ||||
| import ( | ||||
| 	"encoding/json" | ||||
|  | @ -7,7 +7,7 @@ import ( | |||
| 	"net/http" | ||||
| 
 | ||||
| 	"github.com/bitly/go-simplejson" | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| ) | ||||
| 
 | ||||
| // Request parses the request body into a simplejson.Json object
 | ||||
|  | @ -1,4 +1,4 @@ | |||
| package api | ||||
| package requests | ||||
| 
 | ||||
| import ( | ||||
| 	"io/ioutil" | ||||
|  | @ -8,10 +8,10 @@ import ( | |||
| 	"strings" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/cookie" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/options" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/cookies" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/encryption" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/sessions/utils" | ||||
| ) | ||||
| 
 | ||||
|  | @ -28,7 +28,7 @@ var _ sessions.SessionStore = &SessionStore{} | |||
| // interface that stores sessions in client side cookies
 | ||||
| type SessionStore struct { | ||||
| 	CookieOptions *options.CookieOptions | ||||
| 	CookieCipher  *cookie.Cipher | ||||
| 	CookieCipher  *encryption.Cipher | ||||
| } | ||||
| 
 | ||||
| // Save takes a sessions.SessionState and stores the information from it
 | ||||
|  | @ -53,7 +53,7 @@ func (s *SessionStore) Load(req *http.Request) (*sessions.SessionState, error) { | |||
| 		// always http.ErrNoCookie
 | ||||
| 		return nil, fmt.Errorf("Cookie %q not present", s.CookieOptions.CookieName) | ||||
| 	} | ||||
| 	val, _, ok := cookie.Validate(c, s.CookieOptions.CookieSecret, s.CookieOptions.CookieExpire) | ||||
| 	val, _, ok := encryption.Validate(c, s.CookieOptions.CookieSecret, s.CookieOptions.CookieExpire) | ||||
| 	if !ok { | ||||
| 		return nil, errors.New("Cookie Signature not valid") | ||||
| 	} | ||||
|  | @ -96,7 +96,7 @@ func (s *SessionStore) setSessionCookie(rw http.ResponseWriter, req *http.Reques | |||
| // authentication details
 | ||||
| func (s *SessionStore) makeSessionCookie(req *http.Request, value string, now time.Time) []*http.Cookie { | ||||
| 	if value != "" { | ||||
| 		value = cookie.SignedValue(s.CookieOptions.CookieSecret, s.CookieOptions.CookieName, value, now) | ||||
| 		value = encryption.SignedValue(s.CookieOptions.CookieSecret, s.CookieOptions.CookieName, value, now) | ||||
| 	} | ||||
| 	c := s.makeCookie(req, s.CookieOptions.CookieName, value, s.CookieOptions.CookieExpire, now) | ||||
| 	if len(c.Value) > 4096-len(s.CookieOptions.CookieName) { | ||||
|  |  | |||
|  | @ -13,10 +13,10 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/go-redis/redis" | ||||
| 	"github.com/pusher/oauth2_proxy/cookie" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/options" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/cookies" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/encryption" | ||||
| ) | ||||
| 
 | ||||
| // TicketData is a structure representing the ticket used in server session storage
 | ||||
|  | @ -28,7 +28,7 @@ type TicketData struct { | |||
| // SessionStore is an implementation of the sessions.SessionStore
 | ||||
| // interface that stores sessions in redis
 | ||||
| type SessionStore struct { | ||||
| 	CookieCipher  *cookie.Cipher | ||||
| 	CookieCipher  *encryption.Cipher | ||||
| 	CookieOptions *options.CookieOptions | ||||
| 	Client        *redis.Client | ||||
| } | ||||
|  | @ -106,7 +106,7 @@ func (store *SessionStore) Load(req *http.Request) (*sessions.SessionState, erro | |||
| 		return nil, fmt.Errorf("error loading session: %s", err) | ||||
| 	} | ||||
| 
 | ||||
| 	val, _, ok := cookie.Validate(requestCookie, store.CookieOptions.CookieSecret, store.CookieOptions.CookieExpire) | ||||
| 	val, _, ok := encryption.Validate(requestCookie, store.CookieOptions.CookieSecret, store.CookieOptions.CookieExpire) | ||||
| 	if !ok { | ||||
| 		return nil, fmt.Errorf("Cookie Signature not valid") | ||||
| 	} | ||||
|  | @ -166,7 +166,7 @@ func (store *SessionStore) Clear(rw http.ResponseWriter, req *http.Request) erro | |||
| 		return fmt.Errorf("error retrieving cookie: %v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	val, _, ok := cookie.Validate(requestCookie, store.CookieOptions.CookieSecret, store.CookieOptions.CookieExpire) | ||||
| 	val, _, ok := encryption.Validate(requestCookie, store.CookieOptions.CookieSecret, store.CookieOptions.CookieExpire) | ||||
| 	if !ok { | ||||
| 		return fmt.Errorf("Cookie Signature not valid") | ||||
| 	} | ||||
|  | @ -186,7 +186,7 @@ func (store *SessionStore) Clear(rw http.ResponseWriter, req *http.Request) erro | |||
| // makeCookie makes a cookie, signing the value if present
 | ||||
| func (store *SessionStore) makeCookie(req *http.Request, value string, expires time.Duration, now time.Time) *http.Cookie { | ||||
| 	if value != "" { | ||||
| 		value = cookie.SignedValue(store.CookieOptions.CookieSecret, store.CookieOptions.CookieName, value, now) | ||||
| 		value = encryption.SignedValue(store.CookieOptions.CookieSecret, store.CookieOptions.CookieName, value, now) | ||||
| 	} | ||||
| 	return cookies.MakeCookieFromOptions( | ||||
| 		req, | ||||
|  | @ -230,7 +230,7 @@ func (store *SessionStore) getTicket(requestCookie *http.Cookie) (*TicketData, e | |||
| 	} | ||||
| 
 | ||||
| 	// An existing cookie exists, try to retrieve the ticket
 | ||||
| 	val, _, ok := cookie.Validate(requestCookie, store.CookieOptions.CookieSecret, store.CookieOptions.CookieExpire) | ||||
| 	val, _, ok := encryption.Validate(requestCookie, store.CookieOptions.CookieSecret, store.CookieOptions.CookieExpire) | ||||
| 	if !ok { | ||||
| 		// Cookie is invalid, create a new ticket
 | ||||
| 		return newTicket() | ||||
|  |  | |||
|  | @ -13,10 +13,10 @@ import ( | |||
| 	"github.com/alicebob/miniredis" | ||||
| 	. "github.com/onsi/ginkgo" | ||||
| 	. "github.com/onsi/gomega" | ||||
| 	"github.com/pusher/oauth2_proxy/cookie" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/options" | ||||
| 	sessionsapi "github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/cookies" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/encryption" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/sessions" | ||||
| 	sessionscookie "github.com/pusher/oauth2_proxy/pkg/sessions/cookie" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/sessions/redis" | ||||
|  | @ -158,7 +158,7 @@ var _ = Describe("NewSessionStore", func() { | |||
| 				BeforeEach(func() { | ||||
| 					By("Using a valid cookie with a different providers session encoding") | ||||
| 					broken := "BrokenSessionFromADifferentSessionImplementation" | ||||
| 					value := cookie.SignedValue(cookieOpts.CookieSecret, cookieOpts.CookieName, broken, time.Now()) | ||||
| 					value := encryption.SignedValue(cookieOpts.CookieSecret, cookieOpts.CookieName, broken, time.Now()) | ||||
| 					cookie := cookies.MakeCookieFromOptions(request, cookieOpts.CookieName, value, cookieOpts, cookieOpts.CookieExpire, time.Now()) | ||||
| 					request.AddCookie(cookie) | ||||
| 
 | ||||
|  | @ -354,7 +354,7 @@ var _ = Describe("NewSessionStore", func() { | |||
| 				_, err := rand.Read(secret) | ||||
| 				Expect(err).ToNot(HaveOccurred()) | ||||
| 				cookieOpts.CookieSecret = base64.URLEncoding.EncodeToString(secret) | ||||
| 				cipher, err := cookie.NewCipher(utils.SecretBytes(cookieOpts.CookieSecret)) | ||||
| 				cipher, err := encryption.NewCipher(utils.SecretBytes(cookieOpts.CookieSecret)) | ||||
| 				Expect(err).ToNot(HaveOccurred()) | ||||
| 				Expect(cipher).ToNot(BeNil()) | ||||
| 				opts.Cipher = cipher | ||||
|  |  | |||
|  | @ -3,17 +3,17 @@ package utils | |||
| import ( | ||||
| 	"encoding/base64" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/cookie" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/encryption" | ||||
| ) | ||||
| 
 | ||||
| // CookieForSession serializes a session state for storage in a cookie
 | ||||
| func CookieForSession(s *sessions.SessionState, c *cookie.Cipher) (string, error) { | ||||
| func CookieForSession(s *sessions.SessionState, c *encryption.Cipher) (string, error) { | ||||
| 	return s.EncodeSessionState(c) | ||||
| } | ||||
| 
 | ||||
| // SessionFromCookie deserializes a session from a cookie value
 | ||||
| func SessionFromCookie(v string, c *cookie.Cipher) (s *sessions.SessionState, err error) { | ||||
| func SessionFromCookie(v string, c *encryption.Cipher) (s *sessions.SessionState, err error) { | ||||
| 	return sessions.DecodeSessionState(v, c) | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -7,9 +7,9 @@ import ( | |||
| 	"net/url" | ||||
| 
 | ||||
| 	"github.com/bitly/go-simplejson" | ||||
| 	"github.com/pusher/oauth2_proxy/api" | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/requests" | ||||
| ) | ||||
| 
 | ||||
| // AzureProvider represents an Azure based Identity Provider
 | ||||
|  | @ -102,7 +102,7 @@ func (p *AzureProvider) GetEmailAddress(s *sessions.SessionState) (string, error | |||
| 	} | ||||
| 	req.Header = getAzureHeader(s.AccessToken) | ||||
| 
 | ||||
| 	json, err := api.Request(req) | ||||
| 	json, err := requests.Request(req) | ||||
| 
 | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
|  |  | |||
|  | @ -6,8 +6,8 @@ import ( | |||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/api" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/requests" | ||||
| ) | ||||
| 
 | ||||
| // FacebookProvider represents an Facebook based Identity Provider
 | ||||
|  | @ -69,7 +69,7 @@ func (p *FacebookProvider) GetEmailAddress(s *sessions.SessionState) (string, er | |||
| 		Email string | ||||
| 	} | ||||
| 	var r result | ||||
| 	err = api.RequestJSON(req, &r) | ||||
| 	err = requests.RequestJSON(req, &r) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
|  |  | |||
|  | @ -10,8 +10,8 @@ import ( | |||
| 	"strconv" | ||||
| 	"strings" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| ) | ||||
| 
 | ||||
| // GitHubProvider represents an GitHub based Identity Provider
 | ||||
|  |  | |||
|  | @ -4,9 +4,9 @@ import ( | |||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/api" | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/requests" | ||||
| ) | ||||
| 
 | ||||
| // GitLabProvider represents an GitLab based Identity Provider
 | ||||
|  | @ -53,7 +53,7 @@ func (p *GitLabProvider) GetEmailAddress(s *sessions.SessionState) (string, erro | |||
| 		logger.Printf("failed building request %s", err) | ||||
| 		return "", err | ||||
| 	} | ||||
| 	json, err := api.Request(req) | ||||
| 	json, err := requests.Request(req) | ||||
| 	if err != nil { | ||||
| 		logger.Printf("failed making request %s", err) | ||||
| 		return "", err | ||||
|  |  | |||
|  | @ -13,8 +13,8 @@ import ( | |||
| 	"strings" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| 	"golang.org/x/oauth2" | ||||
| 	"golang.org/x/oauth2/google" | ||||
| 	admin "google.golang.org/api/admin/directory/v1" | ||||
|  |  | |||
|  | @ -5,8 +5,8 @@ import ( | |||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/api" | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/requests" | ||||
| ) | ||||
| 
 | ||||
| // stripToken is a helper function to obfuscate "access_token"
 | ||||
|  | @ -55,7 +55,7 @@ func validateToken(p Provider, accessToken string, header http.Header) bool { | |||
| 		params := url.Values{"access_token": {accessToken}} | ||||
| 		endpoint = endpoint + "?" + params.Encode() | ||||
| 	} | ||||
| 	resp, err := api.RequestUnparsedResponse(endpoint, header) | ||||
| 	resp, err := requests.RequestUnparsedResponse(endpoint, header) | ||||
| 	if err != nil { | ||||
| 		logger.Printf("GET %s", stripToken(endpoint)) | ||||
| 		logger.Printf("token validation request failed: %s", err) | ||||
|  |  | |||
|  | @ -6,8 +6,8 @@ import ( | |||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/api" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/requests" | ||||
| ) | ||||
| 
 | ||||
| // LinkedInProvider represents an LinkedIn based Identity Provider
 | ||||
|  | @ -61,7 +61,7 @@ func (p *LinkedInProvider) GetEmailAddress(s *sessions.SessionState) (string, er | |||
| 	} | ||||
| 	req.Header = getLinkedInHeader(s.AccessToken) | ||||
| 
 | ||||
| 	json, err := api.Request(req) | ||||
| 	json, err := requests.Request(req) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
|  |  | |||
|  | @ -10,8 +10,8 @@ import ( | |||
| 	"net/url" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/cookie" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/encryption" | ||||
| ) | ||||
| 
 | ||||
| // Redeem provides a default implementation of the OAuth2 token redemption process
 | ||||
|  | @ -96,12 +96,12 @@ func (p *ProviderData) GetLoginURL(redirectURI, state string) string { | |||
| } | ||||
| 
 | ||||
| // CookieForSession serializes a session state for storage in a cookie
 | ||||
| func (p *ProviderData) CookieForSession(s *sessions.SessionState, c *cookie.Cipher) (string, error) { | ||||
| func (p *ProviderData) CookieForSession(s *sessions.SessionState, c *encryption.Cipher) (string, error) { | ||||
| 	return s.EncodeSessionState(c) | ||||
| } | ||||
| 
 | ||||
| // SessionFromCookie deserializes a session from a cookie value
 | ||||
| func (p *ProviderData) SessionFromCookie(v string, c *cookie.Cipher) (s *sessions.SessionState, err error) { | ||||
| func (p *ProviderData) SessionFromCookie(v string, c *encryption.Cipher) (s *sessions.SessionState, err error) { | ||||
| 	return sessions.DecodeSessionState(v, c) | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| package providers | ||||
| 
 | ||||
| import ( | ||||
| 	"github.com/pusher/oauth2_proxy/cookie" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/apis/sessions" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/encryption" | ||||
| ) | ||||
| 
 | ||||
| // Provider represents an upstream identity provider implementation
 | ||||
|  | @ -15,8 +15,8 @@ type Provider interface { | |||
| 	ValidateSessionState(*sessions.SessionState) bool | ||||
| 	GetLoginURL(redirectURI, finalRedirect string) string | ||||
| 	RefreshSessionIfNeeded(*sessions.SessionState) (bool, error) | ||||
| 	SessionFromCookie(string, *cookie.Cipher) (*sessions.SessionState, error) | ||||
| 	CookieForSession(*sessions.SessionState, *cookie.Cipher) (string, error) | ||||
| 	SessionFromCookie(string, *encryption.Cipher) (*sessions.SessionState, error) | ||||
| 	CookieForSession(*sessions.SessionState, *encryption.Cipher) (string, error) | ||||
| } | ||||
| 
 | ||||
| // New provides a new Provider based on the configured provider string
 | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ import ( | |||
| 	"html/template" | ||||
| 	"path" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| ) | ||||
| 
 | ||||
| func loadTemplates(dir string) *template.Template { | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ import ( | |||
| 	"sync/atomic" | ||||
| 	"unsafe" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| ) | ||||
| 
 | ||||
| // UserMap holds information from the authenticated emails file
 | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import ( | |||
| 	"path/filepath" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/pusher/oauth2_proxy/logger" | ||||
| 	"github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| 	fsnotify "gopkg.in/fsnotify/fsnotify.v1" | ||||
| ) | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| 
 | ||||
| package main | ||||
| 
 | ||||
| import "github.com/pusher/oauth2_proxy/logger" | ||||
| import "github.com/pusher/oauth2_proxy/pkg/logger" | ||||
| 
 | ||||
| func WatchForUpdates(filename string, done <-chan bool, action func()) { | ||||
| 	logger.Printf("file watching not implemented on this platform") | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue