diff --git a/app.py b/app.py index e80a8642b0..04299e823d 100644 --- a/app.py +++ b/app.py @@ -207,7 +207,8 @@ def prepare_model_args(request_body, request_headers): user_json = None if (MS_DEFENDER_ENABLED): authenticated_user_details = get_authenticated_user_details(request_headers) - user_json = get_msdefender_user_json(authenticated_user_details, request_headers) + conversation_id = request_body.get("conversation_id", None) + user_json = get_msdefender_user_json(authenticated_user_details, request_headers, conversation_id) model_args = { "messages": messages, diff --git a/backend/security/ms_defender_utils.py b/backend/security/ms_defender_utils.py index 1c62e782b2..8785c253fb 100644 --- a/backend/security/ms_defender_utils.py +++ b/backend/security/ms_defender_utils.py @@ -1,11 +1,14 @@ import json -def get_msdefender_user_json(authenticated_user_details, request_headers): +def get_msdefender_user_json(authenticated_user_details, request_headers, conversation_id): auth_provider = authenticated_user_details.get('auth_provider') - source_ip = request_headers.get('X-Forwarded-For', request_headers.get('Remote-Addr', '')) + source_ip = request_headers.get('Remote-Addr', '') + header_names = ['User-Agent', 'X-Forwarded-For', 'Forwarded', 'X-Real-IP', 'True-Client-IP', 'CF-Connecting-IP'] user_args = { "EndUserId": authenticated_user_details.get('user_principal_id'), "EndUserIdType": "EntraId" if auth_provider == "aad" else auth_provider, "SourceIp": source_ip.split(':')[0], #remove port + "SourceRequestHeaders": {header: request_headers[header] for header in header_names if header in request_headers}, + "ConversationId": conversation_id, } return json.dumps(user_args) \ No newline at end of file