[pdm-devel] [PATCH datacenter-manager/yew-comp 0/8] openid support for PDM
Shannon Sterz
s.sterz at proxmox.com
Tue Oct 14 15:30:36 CEST 2025
this series adds openid support to PDM. the implementation is based on
PBS' implementation with a some adaptions:
- smaller refactorings to use more data types instead of simply putting
them together with serde_json::json!
- move variables into format strings where possible
- only support the HttpOnly variant of the authentication flow
when going through this i at first wanted to put most of the api
endpoints' logic into a proxmox-rs crate. however, i decided against
that as that would have created a couple of other problems. i'll outline
different options below and why i decided against them:
- access-control: the login endpoint needs to be able to sign a ticket.
currently access-control does not have access to the keyring that
would be necessary for that. the keyring is available in auth-api, but
making it public there has possible other downsides. such as suddenly
making it very hard to audit which parts of our code have access to
the keyring through auth-api.
- auth-api: the login endpoint would need access to the domains and user
configs. the first to setup the openid login against the correct host.
the latter for the auto-create feature when logging in users that have
no user information in the config yet.
the user config could be obtained by depending on access-control.
albeit, that would have required untangling some circular dependencies
between auth-api and access-control. the domain config, however, is
currently not in a proxmox-rs crate. so we would have needed to factor
that out first, which would create quite a bit of churn.
- a new crate/openid crate: this mostly combines the drawbacks of the
previous two options. so i discarded that as an option too.
if we still want to move the code to a shared proxmox-rs crate, i can
revise this series. however, i think this is a sensible approach for
now.
the series also includes adaptions for proxmox-yew-comp to adapt to
openid login flow and add some missing ui around default realms.
Changelog
---------
the first two patches where taken from a different series [1] and slightly
adapted:
- remove a useless log statement
- instead of referring to "openid authentication" correctly call it
"openid authorization"
- remove a useless sort() call
[1]: https://lore.proxmox.com/all/20251008151936.386950-1-s.sterz@proxmox.com/
proxmox-yew-comp:
Shannon Sterz (5):
login_panel/realm_selector: use default realm provided by api
login_panel/realm_selector: add support for openid realm logins
auth view: add openid icon to openid menu option
auth edit openid: add a default realm checkbox
utils/login panel: move openid redirection authorization helper to
utils
src/auth_edit_openid.rs | 11 +-
src/auth_view.rs | 2 +-
src/login_panel.rs | 312 +++++++++++++++++++++++++++++++---------
src/realm_selector.rs | 83 ++++++++++-
src/utils.rs | 32 +++++
5 files changed, 357 insertions(+), 83 deletions(-)
proxmox-datacenter-manager:
Shannon Sterz (3):
api-types: add default field to openid realm config
server: api: add support for adding openid realms and openid logins
ui: enable openid realms in realm panel
Cargo.toml | 2 +-
lib/pdm-api-types/src/openid.rs | 3 +
server/Cargo.toml | 1 +
server/src/api/access/mod.rs | 2 +
server/src/api/access/openid.rs | 311 +++++++++++++++++++++++++
server/src/api/config/access/mod.rs | 2 +
server/src/api/config/access/openid.rs | 290 +++++++++++++++++++++++
server/src/auth/mod.rs | 6 +-
ui/src/configuration/mod.rs | 1 +
9 files changed, 616 insertions(+), 2 deletions(-)
create mode 100644 server/src/api/access/openid.rs
create mode 100644 server/src/api/config/access/openid.rs
Summary over all repositories:
14 files changed, 973 insertions(+), 85 deletions(-)
--
Generated by git-murpp 0.8.1
More information about the pdm-devel
mailing list