hydra
v26.2.0Internet-scale OpenID Certified™ OpenID Connect and OAuth2.1 provider that integrates with your user management through headless APIs. Solve OIDC/OAuth2 user cases over night. Consume as a service on Ory Network or self-host. Trusted by OpenAI and many others for scale and security. Written in Go.
- Maintenance
- SlowBased on the last push: commit history is not collected yet
- License
- Apache-2.0Permissive · OSI-approved
- Security
- 3 advisories1 high, 1 medium, 1 low · Scorecard 5.4/10
- Supported versions
- No scheduleendoflife.date does not track this project
17.7k stars · 1.6k forks · 91 open issues · last release 8 months ago · data checked 4 hours ago
Breaking changes
What to check before upgrading, taken from the notes of the last 30 releases.
- v2.3.0Jan 17, 2025
Breaking Changes
Going forward, OAuth2 Clients requesting an OpenID Connect flow must include the
redirect_uriparameter or the request will be rejected.Deleting consents no longer returns 404 in certain edge cases but instead always 204.
Bug Fixes
- Advertise support for response_mode=form_post in OIDC discovery document (#3861) (9cc5f28)
- Broken JSON round-tripping for custom claims (b36b701):
Adding custom claims with numerical types (think JavaScript Number) previously did not
round-trip through Hydra correctly. For example, passing UNIX timestamps in custom claims
would end up as floating points in exponential notation in the final token. That, in turn,
confused or broke downstream consumers of the token, including Kratos.
Ref https://github.com/go-jose/go-jose/issues/144
- Change comment on revokeOAuth2LoginSessions (#3853) (6d829dd)
- Change index name in down migration (#3911) (3a09db2)
- Correct span names (554238b)
- Correctly pass multiple token audiences and prompt parameters when performing the authorization code flow from the CLI (#3736) (632faef)
- Cpu contention when reading JWKs and suppress generating duplicate JWKs (#3870) (d5f65c5):
Previously each concurrent caller would need to lock a shared mutex when reading or writing a given JWK set.
The read path now doesn't require locking a mutex at all and instead returns valid query results directly.
The write path is now protected by a concurrency control mechanism (using x/sync/singleflight) to ensure only one JWK set is generated and persisted.
Note: Duplicate JWK sets may still be improperly generated if running more than one Hydra instance in a high traffic environment.
Resolves performance issues on some databases when deleting consent.
- v2.0.0Oct 27, 2022
Breaking Changes
SDK naming has changed for the following operations:
ory. - V0alpha2Api.AdminDeleteOAuth2Token(context.Background()). + OAuth2Api.DeleteOAuth2Token(context.Background()). ClientId("foobar").Execute() ory. - V0alpha2Api.RevokeOAuth2Token( + OAuth2Api.RevokeOAuth2Token( context.WithValue(context.Background(), sdk.ContextBasicAuth, sdk.BasicAuth{ UserName: clientID, Password: clientSecret, })).Token(token).Execute() ory. - V0alpha2Api.AdminIntrospectOAuth2Token(context.Background()). + OAuth2Api.IntrospectOAuth2Token(context.Background()). Token(token). Scope("foo bar")).Execute()SDK naming has changed for the following operations:
ory. - V0alpha2Api.DiscoverJsonWebKeys(context.Background()). + WellknownApi.DiscoverJsonWebKeys(context.Background()). - v1.11.0Jan 21, 2022
Breaking Changes
To celebrate this change, we cleaned up the ways you install Ory software. There is now one central brew / bash curl repository:
-brew install ory/hydra/hydra +brew install ory/tap/hydra -bash <(curl https://raw.githubusercontent.com/ory/kratos/master/install.sh) +bash <(curl https://raw.githubusercontent.com/ory/meta/master/install.sh) hydraEndpoint
PUT /clientsnow returns a 404 error when the OAuth2 Client to be updated does not exist. It returned 401 previously. This change requires you to run SQL migrations!Co-authored-by: fjviera
Please notice that this change requires SQL migrations to be applied! As always, please make a backup before applying them!
Co-authored-by: aeneasr <3372410+aeneasr@users.noreply.github.com>
Co-authored-by: Jagoba Gascón
Co-authored-by: Gajewski Dmitriy
Bug Fixes
- Add hiring notice to README (#2893) (0a73d8b)
- Bump deps (#2868) (b287287)
- Contributors is upper case (5bad542)
- Error handling in persister (#2860) (33d75d7)
- FreeBSD build issue, env loading, add OTEL tracing (5158faa), closes #2597 #2912:
This fix addresses an issue where configuration values in arrays could not be loaded from environment variables, which is now possible. For more information on how Ory Hydra parses configuration, head over to the documentation!
Additionally, this PR resolves a build issue on FreeBSD - making it now possible to compile Ory Hydra with the FreeBSD target.
Lastly, this change adds OpenTelemetry support!
- v1.10.2May 4, 2021
- This maintenance release resolves regressions introduced in Ory Hydra v1.10.1. A big change is that Ory Hydra now supports PATCH operations for OAuth2 Clients and is able to handle TLS for admin and public endpoints individually. The breaking changes included in this release address two bugs which are marked as a BREAKING CHANGE. We believe however that these changes do not affect running systems and given the major improvements introduced by the fixes, we decided to mark this as a patch release.
BREAKING CHANGES
- This patch makes it so that already handled consent/login/logout requests respond with 410 Gone instead of 409 Conflict. Additionally, a URL is included that the user should be redirected to!
Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com>
- This patch changes how issuer and public URLs are used. Please be aware that going forward, the public URL is used for redirects. Previously, the issuer URL was used. If no public URL is set, the issuer URL will be used as before.
Release history
All releases on GitHubv26.2.0
Bug Fixes
- Always retry curl invocations to surmount transient third-party failures (c28a6c8):
- Broken older down migrations (8ed407d):
- Context passing and limit response size (f33d6a8):
- Context passing in jsonnetsecure (5884774):
- Correctly detect when to use self-signed certificates (6f9af27):
- Correctly scan SQL
NULLinto go JSON types (163c579):
- Data race in hydra-oss test (262f85b):
- deps: Update dependency prettier to v3.7.4 (106865d):
- Do not cache pairwise subject algorithm (a341867):
- Down migrations in newer MySQL versions (5b0360d):
- Fix benchmark test (d0e0659):
- Flaky tests on hydra-oss tests (ce58946):
- Incorrect default value for page_tokens (f1290da):
- Incorrect usage of database/sql (a8142d0):
- Properly validate policy URI on client creation (44347e7):
- Remove flaky test for unused function (e8c8803):
- Remove WithDumpMigrations option to MigrationBox (6fd8a64):
- Request log config key (11ad1ac):
- Stray debug print (f6b28db):
- Transactions managed by fosite were not working (3ad64db):
- Update CONTRIBUTING.md (0c78aa7):
- Update go modules (845cc4d):
- Update packages to fix GHSA-7h2j-956f-4vf2 (ae75488):
- Upgrade vulnerable dependencies across Go and npm (f28904c):
Co-authored-by: Deepak Prabhakara
- X data race and parallize some tests (d37af61):
Code Generation
- Prepare for OSS release - v26.2.0 (0b84568):
Code Refactoring
- Squash merge old backoffice migration and fix up command (9d96bbd):
Documentation
- Update readmes (8daeebb):
Features
- Add ratelimit buckets to swagger definitions (1819465):
- Add support for NULL and more column types to keysetpagination (6a041ef):
- Automatic transaction retries for postgres (a008e91):
- Collect external latency data and write to logs (46846e9):
- Consider Go migrations DirHash when restoring full schema from backups (5306aaf):
- Forward (some) user request headers to SMS HTTP channel (640eb0b):
- Generate events for SSO and SCIM provider revisions (47a9384):
- Hydra benchmarking tool (f5b4aed):
- Improved tracing (724e425):
- Keto-cli improvements (9f81a29):
- Make SCIM work with MySQL (10ec9bf):
- Move search sidecar to its own docker image (8bd331c):
- Optionally do not store skipped consents (cf77ed6):
- Rename project revision columns (af69132):
- Use keysetpagination planner for keto read queries (5ca4c85):
Reverts
- Simplify consent store (fdca960):
Tests
- Deflake and improve performance (cdf972e):
- Deflake directory watcherx (ea02ce9):
- Faster and more reliable courier tests (a43d8f8):
- Fix multiple data races (4f8ff8e):
- hydra: Add plaintext backups for all DB types (822ea26):
- Minor setup improvements (e65fba7):