From 19fcec84d8d7d21e796c7624e521b60d28ee21ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:45:59 +0200 Subject: Adding upstream version 16.2.11+ds. Signed-off-by: Daniel Baumann --- src/rgw/rgw_rest_oidc_provider.h | 71 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/rgw/rgw_rest_oidc_provider.h (limited to 'src/rgw/rgw_rest_oidc_provider.h') 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 client_ids; + vector 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; } +}; -- cgit v1.2.3