Skip to content

Commit 2ad4c28

Browse files
committed
chore: simplify OIDC discovery URL handling
1 parent b44d28a commit 2ad4c28

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

src/stac_auth_proxy/app.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,7 @@ def create_app(settings: Optional[Settings] = None) -> FastAPI:
9090
public_endpoints=settings.public_endpoints,
9191
private_endpoints=settings.private_endpoints,
9292
default_public=settings.default_public,
93-
oidc_config_url=settings.oidc_discovery_url,
94-
oidc_config_internal_url=settings.oidc_discovery_internal_url,
93+
oidc_config_url=settings.oidc_discovery_internal_url,
9594
)
9695

9796
app.add_middleware(

src/stac_auth_proxy/config.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
"""Configuration for the STAC Auth Proxy."""
22

33
import importlib
4-
from typing import Literal, Optional, Sequence, TypeAlias, Union
4+
from typing import Any, Literal, Optional, Sequence, TypeAlias, Union
55

6-
from pydantic import BaseModel, Field
6+
from pydantic import BaseModel, Field, model_validator
77
from pydantic.networks import HttpUrl
88
from pydantic_settings import BaseSettings, SettingsConfigDict
99

@@ -37,7 +37,7 @@ class Settings(BaseSettings):
3737
# External URLs
3838
upstream_url: HttpUrl
3939
oidc_discovery_url: HttpUrl
40-
oidc_discovery_internal_url: Optional[HttpUrl] = None
40+
oidc_discovery_internal_url: HttpUrl
4141

4242
wait_for_upstream: bool = True
4343

@@ -71,3 +71,11 @@ class Settings(BaseSettings):
7171
}
7272

7373
model_config = SettingsConfigDict()
74+
75+
@model_validator(mode="before")
76+
@classmethod
77+
def default_oidc_discovery_internal_url(cls, data: Any) -> Any:
78+
"""Set the internal OIDC discovery URL to the public URL if not set."""
79+
if not data.get("oidc_discovery_internal_url"):
80+
data["oidc_discovery_internal_url"] = data.get("oidc_discovery_url")
81+
return data

src/stac_auth_proxy/middleware/EnforceAuthMiddleware.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ class EnforceAuthMiddleware:
2727
default_public: bool
2828

2929
oidc_config_url: HttpUrl
30-
oidc_config_internal_url: Optional[HttpUrl] = None
3130
allowed_jwt_audiences: Optional[Sequence[str]] = None
3231

3332
state_key: str = "payload"
@@ -40,7 +39,7 @@ def jwks_client(self) -> jwt.PyJWKClient:
4039
"""Get the OIDC configuration URL."""
4140
if not self._jwks_client:
4241
logger.debug("Requesting OIDC config")
43-
origin_url = str(self.oidc_config_internal_url or self.oidc_config_url)
42+
origin_url = str(self.oidc_config_url)
4443

4544
try:
4645
response = httpx.get(origin_url)

0 commit comments

Comments
 (0)