Commit graph

89 commits

Author SHA1 Message Date
Bobby DeSimone
dc12947241
all: refactor handler logic
- all: prefer `FormValues` to `ParseForm` with subsequent `Form.Get`s
- all: refactor authentication stack to be checked by middleware, and accessible via request context.
- all: replace http.ServeMux with gorilla/mux’s router
- all: replace custom CSRF checks with gorilla/csrf middleware
- authenticate: extract callback path as constant.
- internal/config: implement stringer interface for policy
- internal/cryptutil: add helper func `NewBase64Key`
- internal/cryptutil: rename `GenerateKey` to `NewKey`
- internal/cryptutil: rename `GenerateRandomString` to `NewRandomStringN`
- internal/middleware: removed alice in favor of gorilla/mux
- internal/sessions: remove unused `ValidateRedirectURI` and `ValidateClientSecret`
- internal/sessions: replace custom CSRF with gorilla/csrf fork that supports custom handler protection
- internal/urlutil: add `SignedRedirectURL` to create hmac'd URLs
- internal/urlutil: add `ValidateURL` helper to parse URL options
- internal/urlutil: add `GetAbsoluteURL` which takes a request and returns its absolute URL.
- proxy: remove holdover state verification checks; we no longer are setting sessions in any proxy routes so we don’t need them.
- proxy: replace un-named http.ServeMux with named domain routes.

Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2019-09-16 18:01:14 -07:00
Yuchen Ying
27a3870373 Add tls_server_name option to policy file. 2019-09-07 04:09:49 +00:00
Bobby DeSimone
380d314404
authenticate: make service http only
- Rename SessionState to State to avoid stutter.
- Simplified option validation to use a wrapper function for base64 secrets.
- Removed authenticates grpc code.
- Abstracted logic to load and validate a user's authenticate session.
- Removed instances of url.Parse in favor of urlutil's version.
- proxy: replaces grpc refresh logic with forced deadline advancement.
- internal/sessions: remove rest store; parse authorize header as part of session store.
- proxy: refactor request signer
- sessions: remove extend deadline (fixes #294)
- remove AuthenticateInternalAddr
- remove AuthenticateInternalAddrString
- omit type tag.Key from declaration of vars TagKey* it will be inferred
  from the right-hand side
- remove compatibility package xerrors
- use cloned http.DefaultTransport as base transport
2019-09-04 16:27:08 -07:00
Kent Wang
7723b8db6c Fix StripPomeriumCookie 2019-08-28 19:56:09 +08:00
Bobby DeSimone
6e6ab3baa0
httputil: use http error wrapper
Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2019-08-24 09:15:07 -07:00
Bobby DeSimone
1bfb64ed31
config: remove references to named ports
- Go 1.12.8 changed the way url parse handles service named ports.

Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2019-08-15 09:06:53 -07:00
Travis Groth
ba37ed2305
GRPC Improvements 2019-08-14 18:14:09 -04:00
Bobby DeSimone
8002e74982
proxy: enable client certificate in transport
Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2019-08-12 15:08:18 -07:00
Arend Lagendijk
fe27b79b81 Don't force consent screen for every Azure AD login
Signed-off-by: Arend Lagendijk <a.lagendijk@minddistrict.com>
2019-08-07 10:49:57 +02:00
Bobby DeSimone
a962877ad4
config: fix url type regression (#253)
Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2019-08-03 12:08:26 -07:00
Travis Groth
790619ef01
Restore info metrics (#252) 2019-08-03 12:58:21 -04:00
Bobby DeSimone
2c1953b0ec
internal/config: pass urls by value
Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2019-08-02 15:46:18 -07:00
Bobby DeSimone
357b202456
Merge pull request #240 from desimone/bug/signer-fix-potential-race
cryptutil: fix potential race with signer
2019-07-24 17:54:27 -07:00
Bobby DeSimone
e30aa2c13b
cryptutil: fix potential race with signer 2019-07-24 11:19:13 -07:00
Bobby DeSimone
da9e96b764
telemetry: fix package name in messages
Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2019-07-24 10:04:20 -07:00
Bobby DeSimone
5edfa7b03f
telemetry: add tracing
- telemetry/tace: add traces throughout code
- telemetry/metrics: nest metrics and trace under telemetry
- telemetry/tace: add service name span to HTTPMetricsHandler.
- telemetry/metrics: removed chain dependency middleware_tests.
- telemetry/metrics: wrap and encapsulate variatic view registration.
- telemetry/tace: add jaeger support for tracing.
- cmd/pomerium: move `parseOptions` to internal/config.
- cmd/pomerium: offload server handling to httputil and sub pkgs.
- httputil: standardize creation/shutdown of http listeners.
- httputil: prefer curve X25519 to P256 when negotiating TLS.
- fileutil: use standardized Getw

Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2019-07-24 09:20:16 -07:00
Bobby DeSimone
6b61a48fce
Merge pull request #237 from travisgroth/bug/checksum-overflow
Fix checksum integer overflow in metrics
2019-07-23 09:22:23 -07:00
Travis Groth
087f8fe84f Fix checksum integer overflow in metrics 2019-07-22 22:28:54 -04:00
Bobby DeSimone
b12ecc4cba
identity/google: always show user selection.
Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
2019-07-22 06:48:42 -07:00
Travis Groth
db63956b0e Add info metrics 2019-07-20 08:53:35 -04:00
Bobby DeSimone
a1419f67a5
internal/httputil: prefer X25519 over P256 2019-07-17 21:36:08 -07:00
Bobby DeSimone
c5bcc9bbef
internal/cryptutil: fixed panic on nil pubkey 2019-07-15 19:36:02 -07:00
Bobby DeSimone
b85f8de05f
development: use golangci-lint 2019-07-13 18:28:51 -07:00
Bobby DeSimone
62210c7caf
make unexported 2019-07-12 15:49:49 -07:00
Bobby DeSimone
5b2f6ecd2f
update tests 2019-07-12 15:46:05 -07:00
Bobby DeSimone
bade7461ca
internal/sessions: add cookie chunking 2019-07-12 15:39:03 -07:00
Travis Groth
e635c9bb3b HTTP metrics improvements
- Switch to ochttp plugin
- Add HTTP request metrics
- Relabel for consistency
2019-07-11 22:49:54 -04:00
Travis Groth
4bd4b27f28 GRPC metrics improvements
- change to ocgrpc plugin
- rename labels to be more consistent
- refactor view registration patterns
- add server metrics- add client request size metrics
2019-07-10 22:35:56 -04:00
Bobby DeSimone
7558d5b0de
internal/config: refactor option parsing
- authorize: build whitelist from policy's URLs instead of strings.
- internal/httputil: merged httputil and https package.
- internal/config: merged config and policy packages.
- internal/metrics: removed unused measure struct.
- proxy/clients: refactor Addr fields to be urls.
- proxy: remove unused extend deadline function.
- proxy: use handler middleware for reverse proxy leg.
- proxy: change the way websocket requests are made (route based).

General improvements
- omitted value from range in several cases where for loop could be simplified.
- added error checking to many tests.
- standardize url parsing.
- remove unnecessary return statements.

- proxy: add self-signed certificate support. #179
- proxy: add skip tls certificate verification. #179
- proxy: Refactor websocket support to be route based. #204
2019-07-07 09:39:31 -07:00
Bobby DeSimone
437dee0315
internal/sessions: allow manual session scope 2019-07-06 11:48:52 -07:00
Bobby DeSimone
63043dec9c
internal/sessions: error if session too large 2019-07-06 11:34:49 -07:00
Travis Groth
b2754fd822 internal/identity: fix bug in azure preventing group retrieval 2019-07-06 13:07:48 -04:00
Bobby DeSimone
b8463e30c1
Merge pull request #195 from travisgroth/feature/grpc_metrics
internal/metrics: add gRPC Client Metrics
2019-07-01 08:06:36 -07:00
Travis Groth
43ff275b16 Fix #188 2019-06-30 10:24:22 -04:00
Travis Groth
353b4feaf6 Appease golint gods 2019-06-28 06:35:45 -04:00
Travis Groth
6b9f0d3f57 Error logging 2019-06-28 06:35:45 -04:00
Travis Groth
f8862aaeb6 Refactor views to be registered from main 2019-06-28 06:35:45 -04:00
Travis Groth
77338bd4e9 Add GRPC Client Metrics 2019-06-28 06:35:27 -04:00
Travis Groth
d303a95985 Add proxy client metrics instrumentation
* New set of client request oriented metrics
* RoundTripper chain to instrument requests
2019-06-21 18:55:02 -04:00
Bobby DeSimone
4d4293fc46
internal/logs: make non error conditions less scary in logs
internal/metrics: simplified struct definition with fmt -s.
internal/metrics: added full path to package name.
2019-06-17 08:40:18 +02:00
Travis Groth
ff528e8c7b Add metrics implementation* Covers proxy service on server side* Update documentation 2019-06-16 07:07:40 -04:00
Bobby DeSimone
cf0f98536a
authenticate: programmatic access support
- authenticate: added a token exchange api endpoint that converts
  an identity provider's JWT into a pomerium session.
- internal/identity: authenticate now passes context.
- internal/identity: removed extraneous GetSignInURL from okta.
- internal/sessions: add rest store
- update go.mod / go.sum depedencies.
- docs: add programmatic examples in shell and python
2019-06-12 14:51:19 -07:00
Bobby DeSimone
554e62108f
authorize: fix headers when impersonating
- Add user impersonation docs.
- Add navbar link to v0.0.5 docs.
2019-06-11 15:40:28 -07:00
Travis Groth
78722ec36b Relocate wrapped ResponseWriter to middleware 2019-06-10 23:01:30 -04:00
Travis Groth
64eb992854 Protect Options from being mutated by services
- Change Options URLs from pointers to values

- Remove special handling for AuthenticateURL checksum

- Change Options itself to a value
2019-06-04 22:47:07 -04:00
Bobby DeSimone
bade9f50e6
internal/httputil: use error structs for http errors (#159)
The existing implementation used a ErrorResponse method to propogate
and create http error messages. Since we added functionality to
troubleshoot, signout, and do other tasks following an http error
it's useful to use Error struct in place of method arguments.

This fixes #157 where a troubleshooting links were appearing on pages
that it didn't make sense on (e.g. pages without valid sessions).
2019-06-03 20:00:37 -07:00
Bobby DeSimone
8de453dae3
internal/middleware: validate only top domain (#158) 2019-06-03 08:45:38 -07:00
Tejasvi Nareddy
f966e5ab19 (proxy, internal/config, internal/log, docs): opt-in websocket support 2019-06-01 22:39:46 -04:00
Travis Groth
8c2beac6f1 Add automatic configuration reloading and
policy handling
2019-06-01 14:52:10 -04:00
Bobby DeSimone
77f3933560
internal/config: change internal-authenticate-addr to url (#154) 2019-05-31 17:53:58 -07:00