mirror of
https://github.com/actualbudget/actual.git
synced 2026-03-09 03:32:54 -05:00
[Bug]: The authorization code has already been used. #2485
Closed
opened 2026-02-28 20:15:30 -06:00 by GiteaMirror
·
6 comments
No Branch/Tag Specified
master
claude/fix-simplefin-ssrf-T31gX
claude/release-notes-validation-X7rvR
matiss/7155
claude/fix-simplefin-batch-sync-O8LcD
ai/custom-theme-dual-prefs
matiss/fix-6804
add-claude-github-actions-1772738270730
claude/analyze-internal-errors-4k6O2
react-query-rules
react-query-useSchedules
matiss/separate-lint-format
dependabot/npm_and_yarn/ajv-6.14.0
cursor/sync-performance-notification-9899
react-query-prefs
matiss/chunked-sync-and-progress-ux
v26.2.1
copilot/sub-pr-6880
fix-react-query-clear-on-close-budget
copilot/sub-pr-6140
feat/auto-note
feat/scoped-bank-sync
cursor/desktop-transactions-react-table-1d0c
fix-exhaustive-deps-App
copilot/fix-find-replace-bug
release/v26.2.0-pre
matiss/browser-tests
mobile-fix-drag-and-drop-across-groups
budget-table-v2
PayeeAutocomplete2
pglite
bugfix/plugins/fix-plugins-sw
feat/plugins/plugins-core-package
prerelease
matiss/unicode-minus-fix
cursor/fix-actual-github-issue-6206-gemini-3-pro-preview-9c37
TransactionFormPage
cursor/implement-mortgage-and-loan-account-type-78ca
tests-update-fill-with-pressSequentially
mobile/link-modal
deps/25.11
cursor/fix-update-vrt-apply-ci-job-dispatch-b324
sync-server-plugins
cursor/propose-patch-for-github-issue-5680-2a18
fix/compiler-preserve-inner-dollar-escapes
cursor/analyze-actual-budget-issue-and-propose-fix-5b70
coderabbitai/docstrings/0c070e5
cursor/add-wip-prefix-and-comment-to-prs-d78d
jfdoming/08-21-auto-focus-on-navigate-in-all-browsers
show-totals-on-mobile-budget-banners
allow-child-transactions-make-transfer
mobile-calculator-keyboard
payee-geolocation
enhance/restore_scroll_position
dm-fix-second-click-on-mobile-new-transaction-2
scrollToLocationBudget
alert-autofix-38
tsconfig-composite
mobile-fix-uncategorized-transactions-on-tracking-budgets
server-budget-handlers
fix-sql-injection-in-cleanup-template
non-chrome-draggable-workaround
mobile-budget-page-swipe-navigation
ts-db-all
stable
dark-theme-with-brand-colors
fix-mobile-delete-group
ts-db-select
UnderKoen/reconcile-context-menu
master-before-server-merge
v25.2.1
ts-runQuery
rename-redux-hooks
UnderKoen/3557-persist-state-in-history
remove-redux-CLOSE_BUDGET
fix-exhaustive-deps-errors-FinancesApp
redux-toolkit-createSlice-backup
accounts-function-component
ts-useSplitsExpanded
loot-core-server-package
useTransactios-in-TransactionEdit
react-aria-input
move-redux-to-desktop-client
QueryState-type
fix-themes-applied-late
mobile-vrts
revert-3295-spendingCardFix
react-aria-button-4
split-payee-on-mobile
twk3/pin-apis-crdt
notes-tag-autocomplete
ts-LoadBackup
dnd-kit
package-upgrades
v26.3.0
v26.2.1
v26.2.0
v26.1.0
v25.12.0
v25.11.0
v25.10.0
v25.9.0
v25.8.0
v25.7.1
v25.7.0
v25.6.1
v25.6.0
v25.5.0
v25.4.0
v25.3.1
v25.3.0
v25.2.1
v25.2.0
v25.1.0
v24.12.0
v24.11.0
v24.10.1
v24.10.0
v24.9.0
v24.8.0
v24.7.0
v24.6.0
v24.5.0
v24.4.0
v24.3.0
v24.2.0
v24.1.0
v23.12.0
v23.11.0
v23.10.0
v23.9.0
v23.8.1
v23.8.0
v23.7.2
v23.7.1
v23.7.0
v23.6.0
v23.5.0
v23.4.2
v23.4.1
v23.4.0
v23.3.2
v23.3.0
v23.2.9
v23.2.5
v23.1.12
v22.12.9
Labels
Clear labels
AI generated
API
bank sync
budgeting
bug
can’t replicate
dependencies
docker
documentation
electron
experimental feature
feature
feedback
goal templates
good first issue
help wanted
importers
maintenance
needs info
needs testing
needs triage
needs votes
openid
payees
pull-request
regression
reports
responsive
rules
schedules
server
✨ merged
split transactions
tech debt
theme
transaction import
transaction reconciliation
transactions
translations
upstream
user interface
✅ approved
wontfix
Mirrored from GitHub Pull Request
No Label
bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/actual#2485
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Cheezzhead on GitHub (Sep 19, 2025).
Verified issue does not already exist?
What happened?
I've implemented OpenID with Authelia as OIDC provider. It all worked well, until a few minutes ago: I decided to try to log into the desktop client with my OpenID credentials, which failed with an
openid-grant-failederror, and the below log entry in Authelia:Access Request failed with error: The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client. The authorization code has already been used.If this were only the desktop client failing, I wouldn't worry much (but it would be nice to have confirmation that OpenID authentication doesn't work with the desktop client). However, from that point on any attempted login from the web also fails with the same error. In other words, I currently am unable to login into my AB account at all.
docker-compose:
oidc_authelia.env:
How can we reproduce the issue?
Where are you hosting Actual?
Docker
What browsers are you seeing the problem on?
Firefox
Operating System
Linux
@youngcw commented on GitHub (Sep 19, 2025):
Please reach out on discord for tech support
@Cheezzhead commented on GitHub (Sep 22, 2025):
...This is not tech support, this is a bug. The OIDC provider is correctly configured, AB is configured according to the documentation. After working for a few days, I'm now getting the same error just by logging into the web client. something is going wrong in the AB code
@youngcw commented on GitHub (Sep 22, 2025):
@lelemm
@lelemm commented on GitHub (Sep 23, 2025):
The desktop client (electron) creates a http server when you start the openid flow. So, the return url is the localhost url. That's probably what is going on. On authelia try to add the redirect url to accept
this is the default return url:
http://localhost:3010but if this port is in use, it will use another port that will be displayed on the dev tools console of electron. You can check the code here:753a105b3d/packages/desktop-electron/index.ts (L92C1-L111C10)@Cheezzhead commented on GitHub (Sep 23, 2025):
Good to know! I'll definitely try that out, but I should clarify at this point that the problem has progressed beyond the Desktop client - to the point where I think that was a bit of a red herring (as in, the desktop client just happened to be the thing I was trying out).
I am now getting the 'openid-grant-failed' error on every login attempt. From the (debug) logs from Authelia it seems that everything is set up correctly:
As far as I can see, the entire OIDC flow completed cleanly, however AB logs a 400 response afterwards:
Obviously I don't know anything about AB's internal OIDC flow, but it seems to me that after login, it's making a second request to its own callback endpoint with the same code that Authelia already consumed.
Here's Authelia's OIDC configuration for the Actual Budget client, for posterity:
@Cheezzhead commented on GitHub (Sep 24, 2025):
Update: I've restarted AB with a fresh config and empty sqlite database. I've also assigned a new client id to the respective OIDC client.
I'm able to log in with the server admin account so that this account becomes the server owner. However, as soon as I try to log in with any other account, the issue persists.