1
0
mirror of https://github.com/oauth2-proxy/oauth2-proxy.git synced 2025-06-21 00:29:44 +02:00
Files
.github
contrib
docs
pkg
apis
ip
middleware
middleware_suite_test.go
scope.go
scope_test.go
session.go
options
sessions
app
authentication
clock
cookies
encryption
header
http
ip
logger
middleware
requests
sessions
upstream
util
validation
providers
testdata
tools
.dockerignore
.gitignore
.golangci.yml
CHANGELOG.md
CONTRIBUTING.md
Dockerfile
Dockerfile.arm64
Dockerfile.armv6
LICENSE
MAINTAINERS
Makefile
README.md
RELEASE.md
SECURITY.md
dist.sh
go.mod
go.sum
main.go
main_suite_test.go
main_test.go
nsswitch.conf
oauthproxy.go
oauthproxy_test.go
validator.go
validator_test.go
version.go
watcher.go
watcher_unsupported.go
oauth2-proxy/pkg/apis/middleware/scope.go

61 lines
1.7 KiB
Go
Raw Normal View History

2020-07-04 18:41:58 +01:00
package middleware
import (
"context"
"net/http"
"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
2020-07-04 18:41:58 +01:00
)
type scopeKey string
// RequestScopeKey uses a typed string to reduce likelihood of clashing
// with other context keys
const RequestScopeKey scopeKey = "request-scope"
2020-07-04 18:41:58 +01:00
// RequestScope contains information regarding the request that is being made.
// The RequestScope is used to pass information between different middlewares
// within the chain.
type RequestScope struct {
// ReverseProxy tracks whether OAuth2-Proxy is operating in reverse proxy
// mode and if request `X-Forwarded-*` headers should be trusted
ReverseProxy bool
// RequestID is set to the request's `X-Request-Id` header if set.
// Otherwise a random UUID is set.
RequestID string
2020-07-04 18:41:58 +01:00
// Session details the authenticated users information (if it exists).
Session *sessions.SessionState
// SaveSession indicates whether the session storage should attempt to save
// the session or not.
SaveSession bool
// ClearSession indicates whether the user should be logged out or not.
ClearSession bool
// SessionRevalidated indicates whether the session has been revalidated since
// it was loaded or not.
SessionRevalidated bool
// Upstream tracks which upstream was used for this request
Upstream string
2020-07-04 18:41:58 +01:00
}
// GetRequestScope returns the current request scope from the given request
func GetRequestScope(req *http.Request) *RequestScope {
scope := req.Context().Value(RequestScopeKey)
if scope == nil {
return nil
}
return scope.(*RequestScope)
}
// AddRequestScope adds a RequestScope to a request
func AddRequestScope(req *http.Request, scope *RequestScope) *http.Request {
ctx := context.WithValue(req.Context(), RequestScopeKey, scope)
return req.WithContext(ctx)
}