Skip to content

Commit 9ce9cad

Browse files
committed
rm asset signing logic
1 parent 3bfb408 commit 9ce9cad

File tree

3 files changed

+1
-69
lines changed

3 files changed

+1
-69
lines changed

Diff for: src/stac_auth_proxy/app.py

+1-11
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from starlette_cramjam.middleware import CompressionMiddleware
1414

1515
from .config import Settings
16-
from .handlers import HealthzHandler, ReverseProxyHandler, S3AssetSigner
16+
from .handlers import HealthzHandler, ReverseProxyHandler
1717
from .middleware import (
1818
AddProcessTimeHeaderMiddleware,
1919
ApplyCql2FilterMiddleware,
@@ -60,14 +60,6 @@ async def lifespan(app: FastAPI):
6060
prefix=settings.healthz_prefix,
6161
)
6262

63-
if settings.signer_endpoint:
64-
# TODO: Warn/error if endpoint is public
65-
app.add_api_route(
66-
settings.signer_endpoint,
67-
S3AssetSigner(bucket_pattern=settings.signer_asset_expression).endpoint,
68-
methods=["POST"],
69-
)
70-
7163
app.add_api_route(
7264
"/{path:path}",
7365
ReverseProxyHandler(upstream=str(settings.upstream_url)).proxy_request,
@@ -79,8 +71,6 @@ async def lifespan(app: FastAPI):
7971
#
8072
app.add_middleware(
8173
AuthenticationExtensionMiddleware,
82-
signing_endpoint=settings.signer_endpoint,
83-
signed_asset_expression=settings.signer_asset_expression,
8474
default_public=settings.default_public,
8575
public_endpoints=settings.public_endpoints,
8676
private_endpoints=settings.private_endpoints,

Diff for: src/stac_auth_proxy/config.py

-3
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@ class Settings(BaseSettings):
4444
healthz_prefix: str = Field(pattern=_PREFIX_PATTERN, default="/healthz")
4545
openapi_spec_endpoint: Optional[str] = Field(pattern=_PREFIX_PATTERN, default=None)
4646

47-
signer_endpoint: Optional[str] = Field(pattern=_PREFIX_PATTERN, default=None)
48-
signer_asset_expression: str = Field(default=r"^s3://.*$")
49-
5047
# Auth
5148
default_public: bool = False
5249
public_endpoints: EndpointMethodsNoScope = {

Diff for: src/stac_auth_proxy/middleware/AuthenticationExtensionMiddleware.py

-55
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,11 @@ class AuthenticationExtensionMiddleware(JsonResponseMiddleware):
2525

2626
app: ASGIApp
2727

28-
signing_endpoint: Optional[str]
29-
signed_asset_expression: str
30-
3128
default_public: bool
3229
private_endpoints: EndpointMethods
3330
public_endpoints: EndpointMethods
3431

3532
oidc_config_url: Optional[HttpUrl] = None
36-
signing_scheme_name: str = "signed_url_auth"
3733
auth_scheme_name: str = "oauth"
3834
auth_scheme: dict[str, Any] = field(default_factory=dict)
3935
extension_url: str = (
@@ -88,60 +84,9 @@ def transform_json(self, doc: dict[str, Any]) -> dict[str, Any]:
8884
scheme_loc = doc["properties"] if "properties" in doc else doc
8985
schemes = scheme_loc.setdefault("auth:schemes", {})
9086
schemes[self.auth_scheme_name] = self.auth_scheme
91-
if self.signing_endpoint:
92-
schemes[self.signing_scheme_name] = {
93-
"type": "signedUrl",
94-
"description": "Requires an authentication API",
95-
"flows": {
96-
"authorizationCode": {
97-
"authorizationApi": self.signing_endpoint,
98-
"method": "POST",
99-
"parameters": {
100-
"bucket": {
101-
"in": "body",
102-
"required": True,
103-
"description": "asset bucket",
104-
"schema": {
105-
"type": "string",
106-
"examples": "example-bucket",
107-
},
108-
},
109-
"key": {
110-
"in": "body",
111-
"required": True,
112-
"description": "asset key",
113-
"schema": {
114-
"type": "string",
115-
"examples": "path/to/example/asset.xyz",
116-
},
117-
},
118-
},
119-
"responseField": "signed_url",
120-
}
121-
},
122-
}
12387

12488
# auth:refs
12589
# ---
126-
# Annotate assets with "auth:refs": [signing_scheme]
127-
if self.signing_endpoint:
128-
assets = chain(
129-
# Item
130-
doc.get("assets", {}).values(),
131-
# Items/Search
132-
(
133-
asset
134-
for item in doc.get("features", [])
135-
for asset in item.get("assets", {}).values()
136-
),
137-
)
138-
for asset in assets:
139-
if "href" not in asset:
140-
logger.warning("Asset %s has no href", asset)
141-
continue
142-
if re.match(self.signed_asset_expression, asset["href"]):
143-
asset.setdefault("auth:refs", []).append(self.signing_scheme_name)
144-
14590
# Annotate links with "auth:refs": [auth_scheme]
14691
links = chain(
14792
# Item/Collection

0 commit comments

Comments
 (0)