mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-06 19:06:02 +03:00
ES256 Support in OIDC #5103
Open
opened 2026-02-05 09:40:32 +03:00 by OVERLORD
·
13 comments
No Branch/Tag Specified
development
further_theme_development
l10n_development
release
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
pull-request
Mirrored from GitHub Pull Request
No Label
🔨 Feature Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#5103
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 @Adiack06 on GitHub (Jan 5, 2025).
Describe the feature you'd like
ES256 implementation for OIDC
Describe the benefits this would bring to existing BookStack users
It would allow the use of the far more secure and up-to-date signing format which is preferable for security especially as RS256 is generally on the way out.
It would also work better for people who use Lets Encrypt for signing certs as that is what they typically provide.
Can the goal of this request already be achieved via other means?
No
Have you searched for an existing open/closed issue?
How long have you been using BookStack?
Under 3 months
Additional context
No response
@ssddanbrown commented on GitHub (Jan 9, 2025):
ES256, following the spec, is ECDSA using P-256 and SHA-256.
Looks like it should be supported by the lib we're already using to verify signatures: https://phpseclib.com/
Would need to check/validate the process/format for certs provided via config, as well as autodiscovery.
Tricky to find any useful information out there regarding widespread use/plans/changes in ES256 use for OIDC.
The JWA spec does mark it as
recommended+, hinting at being required in future, so may be a good indicator at specifically supporting ES256 over any other potential algorithm, but not sure about timings around that or realistic use in the OIDC landscape.@CL107 commented on GitHub (Jan 16, 2025):
Hi, I've come across this issue as its something id like to see implemented as well. Be it that its marked as
recommended+i guess its not going to take too long for support to come about. In our use case we just need to be able to sign our own auth correctly for security - and unfortunately this is the only thing keeping us away from BookStack.Although once this is implemented we'll probably be switching straight over from whichever alternative we decide on.
I'll keep an eye on this for any updates on your end as I would love to be able to use BookStack (seems like the best option by far).
@ssddanbrown commented on GitHub (Jan 16, 2025):
That is from a 2015 document though, so things aren't moving too fast there.
Is there a specific reason that can't be done using RS256?
@CL107 commented on GitHub (Jan 22, 2025):
So, we generate all our certs through letsencrypt and the standard it uses is ECDSA. Whilst im sure theres a way to change this, the organisation this is involved with requires higher security wherever possible.
i.e. We cannot use RSA where ECDSA is available.
@ssddanbrown commented on GitHub (Jan 22, 2025):
@CL107 Is there a reason why letsencrypt is used to gain certs for OIDC token signing?
Just seems a bit odd to me to reuse keys from TLS certs to use for another purpose, but don't know if I'm missing or misunderstanding something.
@CL107 commented on GitHub (Feb 4, 2025):
Sorry for the long time to respond. No specific reason @ssddanbrown, we just intend to use our own signing keys wherever possible.
@McTom234 commented on GitHub (Sep 5, 2025):
I managed with minimal changes (4 lines to be exact) to allow
RS512signing algorithms.From what I can read out of that discussion, @ssddanbrown you are not sure whether you should add this feature from a perspective different from the sake of implementing it?
If you think it is useful to have other algorithms supported, I can open a PR and we could discuss an implementation there?
I will provide the lines changed quickly, but I don't have the opportunity to test this against other signings, and currently I am not convinced that I have sufficient knowledge or enough time to logically validate and test whether those changes are 100% correct.
Maybe this only works because
RS256andRS512are so similar, and other signing algorithms would require similar changes.RS512:1ac74099ca/app/Access/Oidc/OidcJwtSigningKey.php (L66)1ac74099ca/app/Access/Oidc/OidcJwtWithClaims.php (L122)1ac74099ca/app/Access/Oidc/OidcProviderSettings.php (L164)1ac74099ca/app/Access/Oidc/OidcJwtSigningKey.php (L100)here I made this change:
Just a quick overview, I could be plain wrong with those changes/this approach. If those changes are acceptable, I would like to think that I have enough skill to draft up something that works for more than one algorithm in general in a PR.
@ssddanbrown commented on GitHub (Sep 5, 2025):
Thanks @McTom234. Generally my concerns come down to testing & maintenance rather than implementation ease, so I just want to make sure that if we're adding extra options they're suited for a wide audience and forward-looking (algorithms which have, and will gain wider adoption), rather than looking to add algorithms just to suit edge-cases.
Feel free to open a new request specifically for that algorithm if there's a case to be made for it to be added.
@VitalyOmelch commented on GitHub (Sep 23, 2025):
Please add this support =) Sometimes we don’t have the ability to choose between RS512 and RS256, and we need to use whatever is provided, and in my case - it is RS512
@ssddanbrown commented on GitHub (Sep 25, 2025):
@VitalyOmelch Please open a new issue, specifically for RS512, and in that please explain the environment/context/systems in use (where enforcement is set) where possible.
@Fly7113 commented on GitHub (Nov 12, 2025):
The support for ES256 (and possibly 384/512) would be a really nice security improvement.
@McTom234 commented on GitHub (Nov 23, 2025):
@ssddanbrown Sorry it took a bit longer; life carries on 😉
I opened #5912 and hope that I understood your concerns (regarding maintenance mainly) correctly. Testing would need to be extended, but I'd say the maintenance is doable, and now it is up to you (the maintainers and community) to decide which algorithms should be implemented; the approach presented should be suitable to implement any preferred.
@ssddanbrown commented on GitHub (Nov 23, 2025):
Thanks @McTom234. To be honest though, implementation/code effort was not really my worry/concern. It comes down to manual testing needs and user support.
Ultimately, to help move things forward, it'd probably help to come up with some kind of criteria for how algorithms are assessed. Here's an attempt at coming up with that:
Algorithm Criteria (Draft)