Skip to content

Commit 34f6509

Browse files
committed
[NRL-1700] Log info about which clientcert is being used for each request
1 parent df3ca99 commit 34f6509

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

layer/nrlf/core/decorators.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,15 +236,23 @@ def request_handler(
236236
"""
237237

238238
def wrapped_func(func: RequestHandler):
239-
def wrapper(*args, **kwargs):
240-
event: APIGatewayProxyEvent = args[0]
241-
context: LambdaContext = args[1]
239+
def wrapper(event: APIGatewayProxyEvent, context: LambdaContext, **kwargs):
240+
client_cert = event.request_context.identity.client_cert
241+
if client_cert:
242+
client_cert_info = {
243+
"subject_dn": client_cert.subject_dn,
244+
"issuer_dn": client_cert.issuer_dn,
245+
"serial_number": client_cert.serial_number,
246+
}
247+
else:
248+
client_cert_info = "No client certificate provided"
242249

243250
logger.log(
244251
code=LogReference.HANDLER000,
245252
method=event.http_method,
246253
path=event.path,
247254
headers=event.headers,
255+
client_cert_info=client_cert_info,
248256
)
249257

250258
if skip_request_verification:

layer/nrlf/tests/events.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,13 @@ def create_test_api_gateway_event(
5555
"resourcePath": "/",
5656
"httpMethod": "GET",
5757
"path": "/Prod/",
58+
"identity": {
59+
"client_cert": {
60+
"subject_dn": "CN=TEST SUBJECT",
61+
"issuer_dn": "CN=TEST ISSUER",
62+
"serial_number": "0000001",
63+
}
64+
},
5865
},
5966
"headers": headers or create_headers(),
6067
"multiValueHeaders": {},

0 commit comments

Comments
 (0)