Commit Graph

58 Commits

Author SHA1 Message Date
Patrik a47e39513f
test: parallelize and improve (#3989) 2025-05-15 15:24:56 +02:00
hackerman 0a6c966206
feat: handle concurrent refreshes and improve graceful refreshing (#3895)
This patch improves Ory Hydra's ability to deal with refresh flows which, for example, concurrently refresh the same token. Furthermore, graceful token refresh has been improved to handle a variety of edge cases and scenarios.

Additionally, serializability errors in CockroachDB are now correctly retried.

See https://github.com/ory-corp/cloud/issues/7311
Closes https://github.com/ory/hydra/pull/3895
2024-12-17 09:57:05 +01:00
hackerman 89323e24de
fix: upgrade fosite and improve webhook integration (#3727) 2024-03-13 12:03:40 +01:00
Henning Perl 1a40833e2c
fix: handle token hook auth config (#3677)
* fix: handle token hook auth config

* fix: bump golangci-lint

---------

Co-authored-by: Arne Luenser <arne.luenser@ory.sh>
2023-12-18 15:48:40 +01:00
Patrik 5c8e7923ed
feat: add authentication options to hooks (#3633) 2023-09-25 11:09:43 +02:00
Arne Luenser 6741a49f7b fix: deflake ttl test 2023-08-08 16:09:06 +02:00
Henning Perl f29fe3af97
feat: stateless authorization code flow (#3515)
This patch optimizes the performance of authorization code grant flows by minimizing the number of database queries. We acheive this by storing the flow in an AEAD-encoded cookie and AEAD-encoded request parameters for the authentication and consent screens. 

BREAKING CHANGE:

* The client that is used as part of the authorization grant flow is stored in the AEAD-encoding. Therefore, running flows will not observe updates to the client after they were started.
* Because the login and consent challenge values now include the AEAD-encoded flow, their size increased to around 1kB for a flow without any metadata (and increases linearly with the amount of metadata). Please adjust your ingress / gateway accordingly.
2023-06-12 20:27:00 +02:00
Serhii Halchenko 9bdf225d8f
feat: add token request hooks for all grant types (#3427)
Added a generic token hook that is called for all grant types and includes `payload` with a single allowed value - `assertion` to cover the `jwt-bearer` grant type customization.

The existing `refresh token hook` is left unchanged and is considered to be deprecated in favor of the new hook logic. The `refresh token hook` will at some point be removed.

Closes #3244
Closes https://github.com/ory/fosite/issues/729
2023-03-26 12:35:52 +02:00
Arne Luenser f56e5fad74 fix: append /v2 to module path 2023-01-28 08:40:41 +01:00
aeneasr c417be1e18 test: fix flaky test 2022-11-10 17:15:57 +01:00
Kevin Goslar d768cf6580
docs: standardize license headers (#3216) 2022-11-03 10:10:12 -05:00
Grant Zvolský 9ef671f284 feat: custom client token ttl (#3206)
This change introduces a new endpoint that allows you to control how long client tokens last. Now you can configure the lifespan for each valid combination of Client, GrantType, and TokenType.

See #3157

Co-authored-by: aeneasr <3372410+aeneasr@users.noreply.github.com>
Co-authored-by: Andreas Bucksteeg <andreas@bucksteeg.de>
2022-09-07 08:10:31 +02:00
aeneasr 7893a98038 fix(oauth2): incorrect TTL override 2022-09-07 08:10:31 +02:00
aeneasr 4002224439 refactor(client): make OAuth2 Client IDs system-chosen and immutable
BREAKING CHANGE: To improve security and scalability (in particular sharding), OAuth 2.0 Client IDs can no longer be chosen but are always assigned a random generated UUID V4. OAuth 2.0 Clients created with custom IDs before the v2.0 release will continue working with their legacy Client ID in Ory Hydra v2.x.

Additionally, the `hydra create client` command no longer supports flag `--id` and flag `--callbacks` has been renamed to `--redirect-uris`.

Closes #2911
2022-09-07 08:10:31 +02:00
aeneasr bbe0406df6 feat: config hot reloading architecture 2022-09-07 08:10:31 +02:00
Grant Zvolsky 8e961d0eb3 code review 2022-09-07 08:10:31 +02:00
Grant Zvolsky 00490cbbc5 code review: generate first NID randomly; add/update tests; fix db-diff 2022-09-07 08:10:31 +02:00
Grant Zvolsky b7fc2bff53 feat: implement NID 2022-09-07 08:10:31 +02:00
Grant Zvolský 9544c03a3b
feat: custom client token ttl (#3206)
This change introduces a new endpoint that allows you to control how long client tokens last. Now you can configure the lifespan for each valid combination of Client, GrantType, and TokenType.

See #3157

Co-authored-by: aeneasr <3372410+aeneasr@users.noreply.github.com>
Co-authored-by: Andreas Bucksteeg <andreas@bucksteeg.de>
2022-07-28 21:12:09 +02:00
Nestor 5bdc4bc156
refactor: integrate with fosite `v0.40` (go-jose migration) (#2526)
Co-authored-by: aeneasr <3372410+aeneasr@users.noreply.github.com>
2021-05-31 18:01:28 +03:00
hackerman 4937a00b9a
fix: bump ory/x and update config usage (#2248) 2020-12-15 13:55:30 +01:00
aeneasr 428df22c7f chore: clean up viper mentions 2020-12-02 13:37:05 +01:00
aeneasr 8c12b27a59 refactor: replace viper with koanf config management
BREAKING CHANGES: After battling with [spf13/viper](https://github.com/spf13/viper) for several years we finally found a viable alternative with [knadh/koanf](https://github.com/knadh/koanf). The complete internal configuration infrastructure has changed, with several highlights:

1. Configuration sourcing works from all sources (file, env, cli flags) with validation against the configuration schema, greatly improving developer experience when changing or updating configuration.
2. Configuration reloading has improved significantly and works flawlessly on Kubernetes.
3. Performance increased dramatically, completely removing the need for a cache layer between the configuration system and ORY Hydra.
4. It is now possible to load several config files using the `--config` flag.
5. Configuration values are now sent to the tracer (e.g. Jaeger) if tracing is enabled.

Please be aware that deprecated configuration flags have finally been removed with this change. It is also possible that ORY Hydra might complain about an invalid configuration, because the validation process has improved significantly.
2020-12-02 13:37:05 +01:00
aeneasr c376473c37 test: refactor oauth2 auth code tests 2020-11-17 17:25:54 +01:00
aeneasr 19409b4d2d test: improve TestClientCredentialsGrantAllScopes 2020-11-17 17:25:54 +01:00
aeneasr b74cffa8d2 test: refactor client credential tests 2020-11-17 17:25:54 +01:00
hackerman 511e8d270e
test: fix misused id field (#2152) 2020-10-29 17:03:32 +01:00
Patrik 7662917015
fix: client update breaks primary key (#2150)
Closes #2148
2020-10-29 15:06:45 +01:00
Bernat Mut 0b1de34a5c
feat: add configuration option to grant default client_credential scope when no scope is requested (#2144)
Adds an option which allows granting the OAuth2 Client's authorized scope when performing a `client_credentials` flow without specifying a scope. This enables compatibility with MITREid.

Closes #2141
2020-10-29 15:06:20 +01:00
Patrik 56bce678cb refactor: use gobuffalo/pop for SQL abstraction (#2059)
This patch replaces the existing SQL and memory managers with a pop based persister. Existing SQL migrations are compatible as they have been migrated to the new SQL abstraction in version 1.7.x. As a goodie, ORY Hydra now supports SQLite for both in-memory as well as on-disk (useful for development and very small deployments) databases!

Closes #1730

Co-authored-by: aeneasr <aeneas@ory.sh>
Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com>
2020-10-20 14:55:49 +02:00
hackerman 5097805473
fix: bump pop to v5.2 (#1922)
Closes #1892
2020-06-22 16:22:40 +02:00
hackerman 94057d9400
refactor: move migrations to gobuffalo/fizz (#1775)
This patch deprecates the previous migration system (sql-migrate) in favor of gobuffalo/fizz. No functional changes have been made.

BREAKING CHANGES: Please run `hydra migrate sql` before applying this release.
2020-04-30 10:58:57 +02:00
hackerman 9243dc2490
vendor: Fix SQL-regression caused by go 1.12.7 (#1534) 2019-08-19 19:11:44 +02:00
David f8f23630d8 all: add CockroachDB support (#1348)
Closes #1326 

Signed-off-by: David López <not4rent@gmail.com>
2019-05-10 13:18:19 +02:00
hackerman 95a51deb31
Improve configuration and service management (#1314)
This patch significantly refactors internal configuration and service management with the goal of making configuration changes possible without service restarts. This patch prepares the possibility to configure ORY Hydra from a remote source (etcd, consul) and watch for changes. This patch also introduces the possibility to configure ORY Hydra from a configuration file on top of environment variables.

The following issues have been fixed as well:

- Key rotation of the system secret is now much simpler (closes #1316)
- Database connectivity parameters such as max_conns no longer cause issues with older postgres versions (closes #1327)
- Non-existing routes now return a JSON error instead of `text/plain` when `application/json` was requested (clsoes #1244)
- We now push tags latest, X, X.Y, X.Y.Z to docker hub (closes #1289)
- The quickstart guide no longer builds the source code but instead pulls latest tag (closes #1309)
- We moved to goreleaser and godownloader for release management (closes #1107)
- The quickstart Docker Compose files are now reusable (closes #1196)

The following issues are also resolved:

- Closes #1121 

Signed-off-by: aeneasr <aeneas@ory.sh>
2019-04-02 11:52:21 +02:00
hackerman 4a8cf84f15
cmd: Add ability to specify consent and login lifespan (#1155)
Closes #1057
2018-11-03 21:15:59 +01:00
hackerman 3a10df9bff
oauth2: Add OAuth2 audience claim and improve migrations (#1145)
This patch adds the ability to whitelist and request an audience
when performing any OAuth 2.0 Flow. The audience is useful in multi-
tenant environments where access tokens should be restricted to certain
resources.

Closes #883
Closes #1144

Signed-off-by: arekkas <aeneas@ory.am>
2018-11-02 16:46:01 +01:00
hackerman 65b7406abe
Move dependencies to ory/x (#1095)
Signed-off-by: aeneasr <aeneas@ory.sh>
2018-10-23 06:59:31 -07:00
Amir Aslaminejad 404bdd711f jwk: update manager to take in context and update all consumers
Signed-off-by: Amir Aslaminejad <aslaminejad@gmail.com>
2018-09-18 09:48:55 +02:00
Amir Aslaminejad 093762a906 client: update all consumers of client store to pass in a context
Signed-off-by: Amir Aslaminejad <aslaminejad@gmail.com>
2018-09-18 09:48:55 +02:00
hackerman a36d0af611
oauth2: Enable client specific CORS settings (#1009)
Field `allowed_cors_origins` was added to OAuth 2.0 Clients. It enables
CORS for the whitelisted URLS for paths which clients interact with,
such as /oauth2/token.

Closes #975

Signed-off-by: arekkas <aeneas@ory.am>
2018-08-26 14:28:05 +02:00
hackerman c72e64cebd
oauth2: Resolve broken expiry when refreshing id token (#1002)
Closes #985

Signed-off-by: arekkas <aeneas@ory.am>
2018-08-23 00:27:20 +02:00
arekkas f32c97e844 cmd: Fix 2-port tests and improve upgrade guide
Signed-off-by: arekkas <aeneas@ory.am>
2018-08-06 11:29:38 +02:00
arekkas cfee3eb3d0 cmd: Introduce public and administrative ports
This patch introduces two ports, public and administrative. The public
port is responsible for handling API requests to public endpoints such
as /oauth2/auth, while the administrative port handles requests to
JWK, OAuth 2.0 Client, and Login & Consent endpoints.

Closes #904

Signed-off-by: arekkas <aeneas@ory.am>
2018-08-06 11:29:38 +02:00
arekkas e79014d33b oauth2: Add and enhance access/refresh token tests
This patch introduces more tests for code and refresh flows and the JWT
strategy.

Signed-off-by: arekkas <aeneas@ory.am>
2018-07-23 17:10:30 +02:00
arekkas a8b9b022d9 client: Deprecate field `id`, now only `client_id` is to be used
Signed-off-by: arekkas <aeneas@ory.am>
2018-07-23 17:10:30 +02:00
arekkas c932ab4571 oauth2: Adds JWT Access Token strategy
This patch adds the (experimental) ability to issue JSON Web Tokens instead of ORY Hydra's opaque access tokens. Please be aware that this feature has had little real-world and unit testing and may not be suitable for production.

Simple integration tests using the JWT strategy have been added to ensure functionality.

To use the new JWT strategy, set environment variable `OAUTH2_ACCESS_TOKEN_STRATEGY` to `jwt`. For example: `export OAUTH2_ACCESS_TOKEN_STRATEGY=jwt`.

Please be aware that we (ORY) do not recommend using the JWT strategy for various reasons. If you can, use the default and recommended "opaque" strategy instead.

Closes #248

Signed-off-by: arekkas <aeneas@ory.am>
2018-07-23 17:10:30 +02:00
arekkas bc0b54c545 oauth2: Implements userinfo response signing 2018-06-24 17:24:12 +02:00
arekkas e41fcf263c jwk: Removes buggy rotate command and improves jwk refresh 2018-06-24 17:24:12 +02:00
arekkas 1d02cae554 jwk: Implements proper refreshing strategy 2018-06-24 17:24:12 +02:00