diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
commit | 19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch) | |
tree | 42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/rgw/rgw_rest_oidc_provider.h | |
parent | Initial commit. (diff) | |
download | ceph-19fcec84d8d7d21e796c7624e521b60d28ee21ed.tar.xz ceph-19fcec84d8d7d21e796c7624e521b60d28ee21ed.zip |
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/rgw/rgw_rest_oidc_provider.h')
-rw-r--r-- | src/rgw/rgw_rest_oidc_provider.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/rgw/rgw_rest_oidc_provider.h b/src/rgw/rgw_rest_oidc_provider.h new file mode 100644 index 000000000..b75dcc799 --- /dev/null +++ b/src/rgw/rgw_rest_oidc_provider.h @@ -0,0 +1,71 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab ft=cpp + +#pragma once + +#include "rgw_rest.h" +#include "rgw_oidc_provider.h" + +class RGWRestOIDCProvider : public RGWRESTOp { +protected: + vector<string> client_ids; + vector<string> thumbprints; + string provider_url; //'iss' field in JWT + string provider_arn; +public: + int verify_permission(optional_yield y) override; + void send_response() override; + virtual uint64_t get_op() = 0; +}; + +class RGWRestOIDCProviderRead : public RGWRestOIDCProvider { +public: + RGWRestOIDCProviderRead() = default; + int check_caps(const RGWUserCaps& caps) override; +}; + +class RGWRestOIDCProviderWrite : public RGWRestOIDCProvider { +public: + RGWRestOIDCProviderWrite() = default; + int check_caps(const RGWUserCaps& caps) override; +}; + +class RGWCreateOIDCProvider : public RGWRestOIDCProviderWrite { +public: + RGWCreateOIDCProvider() = default; + int verify_permission(optional_yield y) override; + void execute(optional_yield y) override; + int get_params(); + const char* name() const override { return "create_oidc_provider"; } + RGWOpType get_type() override { return RGW_OP_CREATE_OIDC_PROVIDER; } + uint64_t get_op() override { return rgw::IAM::iamCreateOIDCProvider; } +}; + +class RGWDeleteOIDCProvider : public RGWRestOIDCProviderWrite { +public: + RGWDeleteOIDCProvider() = default; + void execute(optional_yield y) override; + const char* name() const override { return "delete_oidc_provider"; } + RGWOpType get_type() override { return RGW_OP_DELETE_OIDC_PROVIDER; } + uint64_t get_op() override { return rgw::IAM::iamDeleteOIDCProvider; } +}; + +class RGWGetOIDCProvider : public RGWRestOIDCProviderRead { +public: + RGWGetOIDCProvider() = default; + void execute(optional_yield y) override; + const char* name() const override { return "get_oidc_provider"; } + RGWOpType get_type() override { return RGW_OP_GET_OIDC_PROVIDER; } + uint64_t get_op() override { return rgw::IAM::iamGetOIDCProvider; } +}; + +class RGWListOIDCProviders : public RGWRestOIDCProviderRead { +public: + RGWListOIDCProviders() = default; + int verify_permission(optional_yield y) override; + void execute(optional_yield y) override; + int get_params(); + const char* name() const override { return "list_oidc_providers"; } + RGWOpType get_type() override { return RGW_OP_LIST_OIDC_PROVIDERS; } + uint64_t get_op() override { return rgw::IAM::iamListOIDCProviders; } +}; |