]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: adding spec fields for oauth2-proxy whitelist_domains 59634/head
authorRedouane Kachach <rkachach@redhat.com>
Fri, 6 Sep 2024 10:44:45 +0000 (12:44 +0200)
committerRedouane Kachach <rkachach@redhat.com>
Fri, 6 Sep 2024 10:44:45 +0000 (12:44 +0200)
this field is needed in order to configure which domains are allowed
for redirection during login and/or logout

Fixes: https://tracker.ceph.com/issues/67934
Signed-off-by: Redouane Kachach <rkachach@redhat.com>
src/pybind/mgr/cephadm/services/oauth2_proxy.py
src/python-common/ceph/deployment/service_spec.py

index a84f44817ee0b8750a5add4306b1e09af490f8c6..c19005c95f3ca91728a6ec52d1e1b973eb982069 100644 (file)
@@ -67,10 +67,12 @@ class OAuth2ProxyService(CephadmService):
     def generate_config(self, daemon_spec: CephadmDaemonDeploySpec) -> Tuple[Dict[str, Any], List[str]]:
         assert self.TYPE == daemon_spec.daemon_type
         svc_spec = cast(OAuth2ProxySpec, self.mgr.spec_store[daemon_spec.service_name].spec)
+        whitelist_domains = svc_spec.whitelist_domains or []
+        whitelist_domains += self.get_service_ips_and_hosts('mgmt-gateway')
         context = {
             'spec': svc_spec,
             'cookie_secret': svc_spec.cookie_secret or self.generate_random_secret(),
-            'whitelist_domains': self.get_service_ips_and_hosts('mgmt-gateway'),
+            'whitelist_domains': whitelist_domains,
             'redirect_url': svc_spec.redirect_url or self.get_redirect_url()
         }
 
index 0efd10545c6be4d319767f02ba5d0dc2010522f9..2b1afc141d8de0b92863da92ee4b8279f70adeb4 100644 (file)
@@ -1920,6 +1920,7 @@ class OAuth2ProxySpec(ServiceSpec):
                  cookie_secret: Optional[str] = None,
                  ssl_certificate: Optional[str] = None,
                  ssl_certificate_key: Optional[str] = None,
+                 whitelist_domains: Optional[List[str]] = None,
                  unmanaged: bool = False,
                  extra_container_args: Optional[GeneralArgList] = None,
                  extra_entrypoint_args: Optional[GeneralArgList] = None,
@@ -1955,6 +1956,9 @@ class OAuth2ProxySpec(ServiceSpec):
         self.ssl_certificate = ssl_certificate
         #: The multi-line SSL certificate private key for decrypting communications.
         self.ssl_certificate_key = ssl_certificate_key
+        #: List of allowed domains for safe redirection after login or logout,
+        # preventing unauthorized redirects.
+        self.whitelist_domains = whitelist_domains
         self.unmanaged = unmanaged
 
     def get_port_start(self) -> List[int]: