57 Commits
Author SHA1 Message Date
James Elliott 37a0538aec feat(web): consistent rate limit information (#13510)
This drastically improves the user feedback surrounding rate limited
endpoints displaying information about how long the user should wait.
This also drastically improves the related tooling including adding a
react hook and go funcs to ensure the desired outcome is always
achieved.
2026-10-20 22:35:20 +00:00
James Elliott b3af55d156 docs: add license headers to remaining files (#13064) 2026-09-09 06:56:57 +00:00
James Elliott 01f1d1ec14 fix(oidc): resource indicators grant (#12973)
This fixes an issue where the resource indicators were not recorded or
granted in any scenario. This is a result of the audience and resource
concepts being partially split in authelia.com/provider/oauth2 v0.3.0.

Fixes #12970
2026-09-06 23:19:24 +00:00
James Elliott b6de5c05a2 fix(api): missing and misleading endpoints (#12728)
This sweep fixes a few endpoints as documented in the OpenAPI
Schema.gotc
2026-08-16 00:49:56 +00:00
James Elliott a556571bb6 refactor(api): adjust some warning items (#12549)
This adapts some of the remaining warning items which were missed in the
v2 to v3 OpenAPI migration as well as a few nuances with the encoding of
certain values.
2026-07-18 15:44:10 +00:00
James ElliottandAmir Zarrinkafsh 8de2817112 docs(api): fix misleading endpoint types (#11647)
This adjusts the TOTP register endpoint to reflect the actual API.

Co-authored-by: Amir Zarrinkafsh <3339418+nightah@users.noreply.github.com>
2026-04-08 03:28:12 +00:00
Amir Zarrinkafsh 50f0c4d5c1 refactor(web): update components to align to react best practices (#10747)
This change refactors web components to align with React best practices
by replacing `useEffect` with `useMemo` for derived state, consolidating
multiple `useState` hooks into `useReducer` for complex state
management, optimising imports and removing unnecessary dependencies and
simplifying conditional rendering to reduce re-renders and improve
performance.

Previously, components relied on imperative state updates and effects
that triggered unnecessary computations on every render, leading to
potential performance issues and inconsistent behaviour, whereas the new
implementation uses declarative patterns that compute values only when
dependencies change, ensuring more predictable and efficient updates
while maintaining the same functionality.

Additionally, wrap the application in `React.StrictMode` to enable
development-time checks for potential issues and enforce best practices,
and update the backend dev script to include the dev build tag for
proper container tagging, which affects the `DuoPush` suite in the
development environment.

---------

Signed-off-by: Amir Zarrinkafsh <3339418+nightah@users.noreply.github.com>
2025-11-17 11:32:41 +00:00
James Elliott 7de93556df docs: misc refactors (#9524)
Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2025-05-18 11:44:20 +10:00
James Elliott f6001ffe39 fix(oidc): device authorization flow (#9429)
This fixes general issues with the Device Authorization Flow.

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2025-05-09 14:19:11 +00:00
James Elliott 3ebed86c18 fix(oidc): consent subject binding too early (#9302)
This fixes an issue where the consent session is bound to a subject immediately preventing the user from logging out and using another account to perform the consent. Instead, binding the subject occurs when they respond to the consent form.

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2025-04-27 14:11:25 +10:00
Brynn Crowley f4abcb34b7 feat(web): change password (#7676)
Add the ability for users to change their password from their user settings, without requiring them to use the reset password workflow. User's are required to create a elevated session in order to change their password. Users may not change their password to their current password. The user's current password is required for the password change. Users must follow any established password policies. Administrators are able to turn this feature off.

Closes #3548
2025-03-06 08:24:19 +00:00
Hendrik Sievers 136e92b08d refactor(api): disable external swagger validation (#8844) 2025-03-01 04:44:49 +00:00
James Elliott ef5051b0c3 feat(middlewares): tokenized bucket rate limit (#8321)
This adds rate limits to the TOTP second factor endpoint, the Duo second factor endpoint, Session Elevation endpoint, and the Reset Password endpoint. This protection exists as several configurable tokenized buckets anchored to the users remote IP address. In the event the rate limit is exceeded by the user the middleware will respond with a 429 status, a Retry-After header, and JSON body indicating it's rate limited, which the UI will gracefully handle. This has several benefits that compliment the 1FA regulation, specifically in simple architectures it limits the number of SMTP sends a unique client can make, as well as the number of requests a particular client can make in general on specific endpoints where too many requests may indicate either a fault or some form of abuse.

Closes #7353, Closes #1947

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2025-03-01 03:28:19 +00:00
James Elliott 197b45521f feat(webauthn): passkeys (#7942)
Add support for passkeys, granular attachment modality, granular authenticator selection, and authenticator filtering which is commonly used in an enterprise environment. This also adds metadata verification elements utilizing the MDS3 to the project, including saving attestation statements, verification of attestation statements, etc. This also makes a significant change to the authentication level logic to purely use RFC8176 authentication method references to ensure the future-proof nature of the implementation. This change paves the way for the future of Authelia ensuring we can add custom policies in the future to allow administrators to very deliberately decide what authentication methods are sufficient for a given resource as well as the ability to clearly communicate these authentication methods to third parties via OpenID Connect 1.0 and SAML 2.0. It should be noted that at the time of this commit Passkey authentication is considered a single factor and we will at a later stage add the customizable policies described here to handle other use cases, though we've included a flag that considers properly implemented passkeys as if they were MFA.

Closes #2827, Closes #2761

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2025-02-23 16:08:49 +11:00
Amir Zarrinkafsh d7603f0177 fix: swagger-ui csp, strict csp static files and cleanup obselete files (#7966)
* fix: swagger-ui csp and cleanup unnecessary files

This change fixes CSP errors when browsing Swagger and cuts down the binary/image size 10%+ by keeping only required files from the swagger-ui package.

Signed-off-by: Amir Zarrinkafsh <nightah@me.com>

* fix(api): fix server url

Signed-off-by: Amir Zarrinkafsh <nightah@me.com>

* refactor: set strict csp on static served files

Signed-off-by: Amir Zarrinkafsh <nightah@me.com>

---------

Signed-off-by: Amir Zarrinkafsh <nightah@me.com>
2024-10-03 19:36:02 +10:00
James Elliott fd012b764e fix(oidc): select account prompt missing (#7956)
This fixes an issue where the 'select_account' prompt is considered invalid.

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2024-10-02 17:31:18 +10:00
James Elliott 723b029457 refactor: apply suggestions from code review
Per our standard review process this adjusts the appropriate elements detected during the review.

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2024-03-04 20:29:12 +11:00
James Elliott e4e878f05f build(deps): use go.uber.org/mock
Use the new go.uber.org/mock which is currently maintained.

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2024-03-04 20:29:12 +11:00
James Elliott 85562a2465 refactor: misc fixes
This implements misc fixes as part of one of our betas.

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2024-03-04 20:29:11 +11:00
James Elliott 2a388194fb feat(web): revoke reset password tokens
This adds functionality to the frontend to revoke the Reset Password JWT's.

Closes #136

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2024-03-04 20:29:11 +11:00
James Elliott 320b96486c docs: update documentation
This updates various documentaiton elements for the pending changes.

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2024-03-04 20:29:11 +11:00
James Elliott e618cf3416 feat(web): one-time codes for identity verification
This replaces the JWT method for Identity Verification for most elements with a One-Time Code which has a controllable lifetime. These codes elevate the session for a duration, are less likely to be accidentally clicked, can be revoked, and generally a better experience for users. Users will be able to copy the codes directly from the email or manually type them. This improves the process as the user is very unlikely to input the code into the wrong window, and can't open it in the wrong browser. In addition the process prevents accidental clicking from causing issues.

Closes #3801

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2024-03-04 20:28:24 +11:00
c0dbdd97ab feat(web): multiple webauthn credential registration
This implements multiple WebAuthn Credential registrations by means of a generic user settings UI.

Closes #275, Closes #4366

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
Co-authored-by: Clément Michaud <clement.michaud34@gmail.com>
Co-authored-by: Stephen Kent <smkent@smkent.net>
Co-authored-by: Amir Zarrinkafsh <nightah@me.com>
2024-03-04 20:28:24 +11:00
Edward BettsandJames Elliott 549ea42624 refactor: correct spelling mistakes (#6395)
Co-authored-by: James Elliott <james-d-elliott@users.noreply.github.com>
2023-12-12 05:52:40 +11:00
James Elliott 0196e0b7ff feat(oidc): jwt secured authorization response mode (#5914)
This implements the Financial-grade API JWT Secured Authorization Response Mode for OAuth 2.0 also known as JARM per https://openid.net/specs/openid-financial-api-jarm.html and related specifications. This implements part of the FAPI 2.0 security profile.

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2023-08-30 22:05:25 +10:00
James Elliott 34b7a47bc8 feat(oidc): jwt response for introspection (#5840)
This implements the standard for JWT encoded and signed responses from the introspection endpoint. This has been implemented as per the IETF draft https://datatracker.ietf.org/doc/html/draft-ietf-oauth-jwt-introspection-response and as it is a draft (it is also an expired draft) so it should be noted that this implementation may be removed or changed without any regard for breaking changes. While this factor points in the direction of this never receiving ratification the IANA has accepted registration of the metadata parameters for this specification which points to the fact that it probably will.

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2023-08-27 12:52:57 +10:00
James Elliott 7f3c81f918 docs(oidc): misc fix to openapi spec (#5873)
Fixes miscellaneous OpenAPI 3.0 spec elements for OpenID Connect 1.0.

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2023-08-19 11:42:40 +10:00
James Elliott cf841b56f1 docs(oidc): properly describe the introspection endpoint (#5777)
Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2023-08-04 19:17:36 +10:00
James Elliott 53c5994a03 docs: fix openapi (#5419)
Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2023-05-09 21:36:14 +10:00
James Elliott 616fa3c48d docs: header consistency (#5266) 2023-04-18 09:53:26 +10:00
James Elliott 2733fc040c refactor: webauthn naming (#5243)
Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2023-04-15 02:04:42 +10:00
James Elliott 0424652940 refactor: adjust openapi (#5192)
Misc fixes to OpenAPI Specification that were missed.

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2023-04-08 15:25:19 +10:00
James Elliott 2dcfc0b04c feat(handlers): authz authrequest authelia url (#5181)
This adjusts the AuthRequest Authz implementation behave similarly to the other implementations in as much as Authelia can return the relevant redirection to the proxy and the proxy just utilizes it if possible. In addition it swaps the HAProxy examples over to the ForwardAuth implementation as that's now supported.

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
2023-04-08 14:48:55 +10:00
James Elliott 42671d3edb feat(oidc): client_secret_jwt client auth (#5031)
This theoretically adds support for client_secret_jwt.
2023-03-06 13:35:58 +11:00
James Elliott a345490826 feat(server): handle head method (#5003)
This implements some HEAD method handlers for various static resources and the /api/health endpoint.
2023-02-28 20:01:09 +11:00
James Elliott a7ccf3652f docs: fix rfc references and fix misc issues (#4879) 2023-02-05 18:11:30 +11:00
James ElliottandAmir Zarrinkafsh 65705a646d feat(server): customizable authz endpoints (#4296)
This allows users to customize the authz endpoints.

Closes #2753, Fixes #3716

Co-authored-by: Amir Zarrinkafsh <nightah@me.com>
2023-01-25 20:36:40 +11:00
James Elliott 1c3219e93f perf(server): cached openapi document (#4674)
This should lead to a small performance gain by caching the openapi.yml with etags as well as eliminating the use of nonce crypto generation when not required.
2023-01-03 14:49:02 +11:00
James Elliott 3ba2eae20e fix(server): verify endpoint 405ing non-get/head reqs (#4607)
Fixes an issue specific to envoy that prevents the verify endpoint working with requests not using the GET or HEAD methods.
2022-12-21 18:47:20 +11:00
James Elliott 241b9b1950 docs(api): update openapi.yml with oidc endpoints (#4572) 2022-12-14 16:18:34 +11:00
James Elliott 3aaca0604f feat(oidc): implicit consent (#4080)
This adds multiple consent modes to OpenID Connect clients. Specifically it allows configuration of a new consent mode called implicit which never asks for user consent.
2022-10-20 13:16:36 +11:00
James Elliott 92aba8eb0b feat(server): zxcvbn password policy server side (#3151)
This is so the zxcvbn ppolicy is checked on the server.
2022-04-15 19:30:51 +10:00
James Elliott 9d5ac4526e fix(configuration): remove unused password policy option (#3149)
Removes the min score option from the ZXCVBN policy and adds tests.
2022-04-09 09:21:49 +10:00
James Elliott 9e05066097 refactor(handlers): ppolicy (#3103)
Add tests and makes the password policy a provider so the configuration can be loaded to memory on startup.
2022-04-03 21:58:27 +10:00
James Elliott b2d35d88ec feat(configuration): allow rfc4918 http verbs in acl (#2988)
This allows the HTTP Method verbs from RFC4918 to be used. See https://datatracker.ietf.org/doc/html/rfc4918 for more information.
2022-04-01 21:53:10 +11:00
James Elliott 70ab8aab15 fix(web): show appropriate default and available methods (#2999)
This ensures that; the method set when a user does not have a preference is a method that is available, that if a user has a preferred method that is not available it is changed to an enabled method with preference put on methods the user has configured, that the frontend does not show the method selection option when only one method is available.
2022-03-28 12:26:30 +11:00
James Elliott 8f05846e21 feat: webauthn (#2707)
This implements Webauthn. Old devices can be used to authenticate via the appid compatibility layer which should be automatic. New devices will be registered via Webauthn, and devices which do not support FIDO2 will no longer be able to be registered. At this time it does not fully support multiple devices (backend does, frontend doesn't allow registration of additional devices). Does not support passwordless.
2022-03-03 22:20:43 +11:00
Amir Zarrinkafsh 0660815143 fix(api): fix grouping for user info endpoints (#2710) 2021-12-13 11:11:03 +11:00
James Elliott ad8e844af6 feat(totp): algorithm and digits config (#2634)
Allow users to configure the TOTP Algorithm and Digits. This should be used with caution as many TOTP applications do not support it. Some will also fail to notify the user that there is an issue. i.e. if the algorithm in the QR code is sha512, they continue to generate one time passwords with sha1. In addition this drastically refactors TOTP in general to be more user friendly by not forcing them to register a new device if the administrator changes the period (or algorithm).

Fixes #1226.
2021-12-01 23:11:29 +11:00
Philipp Staiger 01b77384f9 feat(duo): multi device selection (#2137)
Allow users to select and save the preferred duo device and method, depending on availability in the duo account. A default enrollment URL is provided and adjusted if returned by the duo API. This allows auto-enrollment if enabled by the administrator.

Closes #594. Closes #1039.
2021-12-01 14:32:58 +11:00