Skip to content

Commit 9ed7366

Browse files
authored
Merge pull request #1680 from jumpserver/pr@dev@fix_facelive_client
fix(facelive): complete desktop verification and asset handoff
2 parents eaeaca0 + 5cd0c97 commit 9ed7366

25 files changed

Lines changed: 384 additions & 47 deletions

‎electron/src/desktop/main.ts‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,13 @@ function installConnectorSessionHooks(targetSession) {
161161
requestHeaders[cookieHeader] = cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join("; ");
162162
}
163163
}
164+
if (isFaceSocket) {
165+
const current = authService.currentSession();
166+
const bearer = await authService.freshToken(current.origin, current.sessionKey, current.bearerToken);
167+
const authorization =
168+
Object.keys(requestHeaders).find((name) => name.toLowerCase() === "authorization") || "Authorization";
169+
requestHeaders[authorization] = `Bearer ${bearer}`;
170+
}
164171
}
165172
} catch {
166173
// Leave headers untouched when the connector URL is malformed.

‎i18n/locales/en.json‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,10 @@
14481448
"Restricted": "This login is restricted by an access control policy.",
14491449
"ReviewGroupDescription": "The following assets require approval. Confirm to submit all requests.",
14501450
"FaceGroupDescription": "The following assets require face verification. Complete them one by one in this dialog.",
1451+
"FacePageUnavailable": "The face verification page did not load. Please retry.",
1452+
"FaceRequestTimedOut": "Timed out requesting face verification. Please retry.",
1453+
"FaceVerificationTimedOut": "Face verification timed out. Please retry or cancel.",
1454+
"FaceVerificationFailed": "Face verification was not completed.",
14511455
"ErrorGroupDescription": "The following assets have the same type of login restriction.",
14521456
"Assignees": "Assignees: {value}",
14531457
"SubmitAll": "Submit all reviews",
@@ -1582,6 +1586,15 @@
15821586
"ConnectingHint": "Keep this window open while the secure channel is established",
15831587
"CameraReady": "Camera ready",
15841588
"LookStraight": "Look straight at the camera and keep your face inside the guide",
1589+
"Guidance": {
1590+
"multiple_faces": "More than one face detected. Keep only yourself in view",
1591+
"face_missing": "Keep your entire face inside the camera area",
1592+
"too_far": "Move closer to the camera",
1593+
"replayed_frame": "The image is static or repeated. Check the camera and move naturally",
1594+
"identity_mismatch": "This face does not match the enrolled user",
1595+
"template_mismatch": "The face model has changed. Enroll your face again",
1596+
"liveness": "Checking liveness. Keep the image clear and move naturally"
1597+
},
15851598
"CapturingSamples": "Capturing face samples {accepted}/{required}",
15861599
"Completed": "Face verification completed",
15871600
"Failed": "Face verification failed",

‎i18n/locales/es.json‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,10 @@
14481448
"Restricted": "Este inicio de sesión está restringido por una política de control de acceso.",
14491449
"ReviewGroupDescription": "Los siguientes activos requieren aprobación. Confirme para enviar todas las solicitudes.",
14501450
"FaceGroupDescription": "Los siguientes activos requieren verificación facial. Complételas una por una en este cuadro de diálogo.",
1451+
"FacePageUnavailable": "No se pudo cargar la página de verificación facial. Inténtalo de nuevo.",
1452+
"FaceRequestTimedOut": "Se agotó el tiempo para solicitar la verificación facial. Inténtalo de nuevo.",
1453+
"FaceVerificationTimedOut": "Se agotó el tiempo de verificación facial. Inténtalo de nuevo o cancela.",
1454+
"FaceVerificationFailed": "La verificación facial no se completó.",
14511455
"ErrorGroupDescription": "Los siguientes activos tienen el mismo tipo de restricción de inicio de sesión.",
14521456
"Assignees": "Responsables: {value}",
14531457
"SubmitAll": "Enviar todas las revisiones",
@@ -2467,6 +2471,15 @@
24672471
"ConnectingHint": "Mantenga esta ventana abierta mientras se establece el canal seguro",
24682472
"CameraReady": "Cámara lista",
24692473
"LookStraight": "Mire de frente a la cámara y mantenga el rostro dentro de la guía",
2474+
"Guidance": {
2475+
"multiple_faces": "Se detectaron varias caras. Manténgase solo en la imagen",
2476+
"face_missing": "Mantenga todo el rostro dentro del área de la cámara",
2477+
"too_far": "Acérquese a la cámara",
2478+
"replayed_frame": "La imagen está estática o repetida. Revise la cámara y muévase con naturalidad",
2479+
"identity_mismatch": "Este rostro no coincide con el usuario registrado",
2480+
"template_mismatch": "El modelo facial cambió. Registre su rostro de nuevo",
2481+
"liveness": "Comprobando presencia real. Mantenga buena iluminación y muévase con naturalidad"
2482+
},
24702483
"CapturingSamples": "Capturando muestras faciales {accepted}/{required}",
24712484
"Completed": "Verificación facial completada",
24722485
"Failed": "Error en la verificación facial",

‎i18n/locales/ja.json‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,10 @@
14481448
"Restricted": "このログインはアクセス制御ポリシーにより制限されています。",
14491449
"ReviewGroupDescription": "次のアセットには承認が必要です。確認するとすべてのリクエストを送信します。",
14501450
"FaceGroupDescription": "次のアセットには顔認証が必要です。このダイアログで 1 件ずつ完了してください。",
1451+
"FacePageUnavailable": "顔認証ページを読み込めませんでした。再試行してください。",
1452+
"FaceRequestTimedOut": "顔認証のリクエストがタイムアウトしました。再試行してください。",
1453+
"FaceVerificationTimedOut": "顔認証がタイムアウトしました。再試行するかキャンセルしてください。",
1454+
"FaceVerificationFailed": "顔認証が完了しませんでした。",
14511455
"ErrorGroupDescription": "次のアセットには同じ種類のログイン制限があります。",
14521456
"Assignees": "担当者:{value}",
14531457
"SubmitAll": "すべての承認を送信",
@@ -2467,6 +2471,15 @@
24672471
"ConnectingHint": "安全なチャネルの確立中はこのウィンドウを開いたままにしてください",
24682472
"CameraReady": "カメラ準備完了",
24692473
"LookStraight": "カメラをまっすぐ見て、顔をガイド内に保ってください",
2474+
"Guidance": {
2475+
"multiple_faces": "複数の顔が検出されました。画面には本人だけが映るようにしてください",
2476+
"face_missing": "顔全体をカメラの枠内に入れてください",
2477+
"too_far": "カメラに近づいてください",
2478+
"replayed_frame": "映像が静止または反復しています。カメラを確認し、自然に動いてください",
2479+
"identity_mismatch": "登録済みの顔と一致しません",
2480+
"template_mismatch": "顔認証モデルが変更されました。顔を再登録してください",
2481+
"liveness": "生体を確認中です。明るい場所で自然に動いてください"
2482+
},
24702483
"CapturingSamples": "顔サンプルを取得中 {accepted}/{required}",
24712484
"Completed": "顔検証が完了しました",
24722485
"Failed": "顔検証に失敗しました",

‎i18n/locales/ko.json‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,10 @@
14481448
"Restricted": "이 로그인은 접근 제어 정책에 의해 제한됩니다.",
14491449
"ReviewGroupDescription": "다음 자산은 승인이 필요합니다. 확인하면 모든 요청을 제출합니다.",
14501450
"FaceGroupDescription": "다음 자산은 얼굴 인증이 필요합니다. 이 대화상자에서 하나씩 완료하세요.",
1451+
"FacePageUnavailable": "얼굴 인증 페이지를 불러오지 못했습니다. 다시 시도하세요.",
1452+
"FaceRequestTimedOut": "얼굴 인증 요청 시간이 초과되었습니다. 다시 시도하세요.",
1453+
"FaceVerificationTimedOut": "얼굴 인증 시간이 초과되었습니다. 다시 시도하거나 취소하세요.",
1454+
"FaceVerificationFailed": "얼굴 인증이 완료되지 않았습니다.",
14511455
"ErrorGroupDescription": "다음 자산에 동일한 유형의 로그인 제한이 적용되었습니다.",
14521456
"Assignees": "담당자: {value}",
14531457
"SubmitAll": "모든 승인 요청 제출",
@@ -2467,6 +2471,15 @@
24672471
"ConnectingHint": "보안 채널을 설정하는 동안 이 창을 열어 두세요",
24682472
"CameraReady": "카메라 준비 완료",
24692473
"LookStraight": "카메라를 정면으로 바라보고 얼굴을 안내선 안에 유지하세요",
2474+
"Guidance": {
2475+
"multiple_faces": "여러 얼굴이 감지되었습니다. 화면에 본인만 보이도록 하세요",
2476+
"face_missing": "얼굴 전체를 카메라 영역 안에 넣으세요",
2477+
"too_far": "카메라에 더 가까이 오세요",
2478+
"replayed_frame": "화면이 정지되었거나 반복됩니다. 카메라를 확인하고 자연스럽게 움직이세요",
2479+
"identity_mismatch": "등록된 얼굴과 일치하지 않습니다",
2480+
"template_mismatch": "얼굴 모델이 변경되었습니다. 얼굴을 다시 등록하세요",
2481+
"liveness": "실제 얼굴을 확인 중입니다. 밝은 곳에서 자연스럽게 움직이세요"
2482+
},
24702483
"CapturingSamples": "얼굴 샘플 캡처 중 {accepted}/{required}",
24712484
"Completed": "얼굴 검증 완료",
24722485
"Failed": "얼굴 검증 실패",

‎i18n/locales/pt_br.json‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,10 @@
14481448
"Restricted": "Este login está restrito por uma política de controle de acesso.",
14491449
"ReviewGroupDescription": "Os ativos a seguir exigem aprovação. Confirme para enviar todas as solicitações.",
14501450
"FaceGroupDescription": "Os ativos a seguir exigem verificação facial. Conclua cada uma nesta caixa de diálogo.",
1451+
"FacePageUnavailable": "Não foi possível carregar a página de verificação facial. Tente novamente.",
1452+
"FaceRequestTimedOut": "A solicitação de verificação facial expirou. Tente novamente.",
1453+
"FaceVerificationTimedOut": "A verificação facial expirou. Tente novamente ou cancele.",
1454+
"FaceVerificationFailed": "A verificação facial não foi concluída.",
14511455
"ErrorGroupDescription": "Os ativos a seguir têm o mesmo tipo de restrição de login.",
14521456
"Assignees": "Responsáveis: {value}",
14531457
"SubmitAll": "Enviar todas as revisões",
@@ -2467,6 +2471,15 @@
24672471
"ConnectingHint": "Mantenha esta janela aberta enquanto o canal seguro é estabelecido",
24682472
"CameraReady": "Câmera pronta",
24692473
"LookStraight": "Olhe diretamente para a câmera e mantenha o rosto dentro da guia",
2474+
"Guidance": {
2475+
"multiple_faces": "Vários rostos detectados. Mantenha apenas você na imagem",
2476+
"face_missing": "Mantenha o rosto inteiro na área da câmera",
2477+
"too_far": "Aproxime-se da câmera",
2478+
"replayed_frame": "A imagem está parada ou repetida. Verifique a câmera e mova-se naturalmente",
2479+
"identity_mismatch": "Este rosto não corresponde ao usuário cadastrado",
2480+
"template_mismatch": "O modelo facial mudou. Cadastre seu rosto novamente",
2481+
"liveness": "Verificando presença real. Mantenha boa iluminação e mova-se naturalmente"
2482+
},
24702483
"CapturingSamples": "Capturando amostras faciais {accepted}/{required}",
24712484
"Completed": "Verificação facial concluída",
24722485
"Failed": "Falha na verificação facial",

‎i18n/locales/ru.json‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,10 @@
14481448
"Restricted": "Этот вход ограничен политикой контроля доступа.",
14491449
"ReviewGroupDescription": "Для следующих ресурсов требуется подтверждение. Подтвердите, чтобы отправить все запросы.",
14501450
"FaceGroupDescription": "Для следующих ресурсов требуется проверка лица. Выполните ее по очереди в этом диалоге.",
1451+
"FacePageUnavailable": "Не удалось загрузить страницу проверки лица. Повторите попытку.",
1452+
"FaceRequestTimedOut": "Время запроса проверки лица истекло. Повторите попытку.",
1453+
"FaceVerificationTimedOut": "Время проверки лица истекло. Повторите попытку или отмените действие.",
1454+
"FaceVerificationFailed": "Проверка лица не завершена.",
14511455
"ErrorGroupDescription": "Для следующих ресурсов действует одинаковое ограничение входа.",
14521456
"Assignees": "Исполнители: {value}",
14531457
"SubmitAll": "Отправить все на подтверждение",
@@ -2467,6 +2471,15 @@
24672471
"ConnectingHint": "Не закрывайте это окно, пока устанавливается защищённое соединение",
24682472
"CameraReady": "Камера готова",
24692473
"LookStraight": "Смотрите прямо в камеру и держите лицо внутри рамки",
2474+
"Guidance": {
2475+
"multiple_faces": "Обнаружено несколько лиц. В кадре должны быть только вы",
2476+
"face_missing": "Поместите лицо целиком в область камеры",
2477+
"too_far": "Подойдите ближе к камере",
2478+
"replayed_frame": "Изображение неподвижно или повторяется. Проверьте камеру и двигайтесь естественно",
2479+
"identity_mismatch": "Лицо не совпадает с зарегистрированным пользователем",
2480+
"template_mismatch": "Модель распознавания изменилась. Зарегистрируйте лицо заново",
2481+
"liveness": "Проверяется подлинность. Обеспечьте хорошее освещение и двигайтесь естественно"
2482+
},
24702483
"CapturingSamples": "Захват образцов лица {accepted}/{required}",
24712484
"Completed": "Проверка лица завершена",
24722485
"Failed": "Проверка лица не пройдена",

‎i18n/locales/vi.json‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,10 @@
14481448
"Restricted": "Đăng nhập này bị hạn chế bởi chính sách kiểm soát truy cập.",
14491449
"ReviewGroupDescription": "Các tài sản sau cần phê duyệt. Xác nhận để gửi mọi yêu cầu.",
14501450
"FaceGroupDescription": "Các tài sản sau cần xác minh khuôn mặt. Hãy hoàn tất từng mục trong hộp thoại này.",
1451+
"FacePageUnavailable": "Không thể tải trang xác minh khuôn mặt. Vui lòng thử lại.",
1452+
"FaceRequestTimedOut": "Yêu cầu xác minh khuôn mặt đã hết thời gian. Vui lòng thử lại.",
1453+
"FaceVerificationTimedOut": "Xác minh khuôn mặt đã hết thời gian. Vui lòng thử lại hoặc hủy.",
1454+
"FaceVerificationFailed": "Xác minh khuôn mặt chưa hoàn tất.",
14511455
"ErrorGroupDescription": "Các tài sản sau có cùng loại hạn chế đăng nhập.",
14521456
"Assignees": "Người xử lý: {value}",
14531457
"SubmitAll": "Gửi mọi yêu cầu xét duyệt",
@@ -2467,6 +2471,15 @@
24672471
"ConnectingHint": "Giữ cửa sổ này mở trong khi thiết lập kênh bảo mật",
24682472
"CameraReady": "Camera đã sẵn sàng",
24692473
"LookStraight": "Nhìn thẳng vào camera và giữ khuôn mặt trong khung hướng dẫn",
2474+
"Guidance": {
2475+
"multiple_faces": "Phát hiện nhiều khuôn mặt. Chỉ để một mình bạn trong khung hình",
2476+
"face_missing": "Đặt toàn bộ khuôn mặt trong vùng camera",
2477+
"too_far": "Hãy lại gần camera hơn",
2478+
"replayed_frame": "Hình ảnh đứng yên hoặc lặp lại. Kiểm tra camera và di chuyển tự nhiên",
2479+
"identity_mismatch": "Khuôn mặt này không khớp với người đã đăng ký",
2480+
"template_mismatch": "Mô hình nhận diện đã thay đổi. Vui lòng đăng ký lại khuôn mặt",
2481+
"liveness": "Đang kiểm tra người thật. Giữ đủ ánh sáng và di chuyển tự nhiên"
2482+
},
24702483
"CapturingSamples": "Đang thu thập mẫu khuôn mặt {accepted}/{required}",
24712484
"Completed": "Đã xác minh khuôn mặt",
24722485
"Failed": "Xác minh khuôn mặt thất bại",

‎i18n/locales/zh.json‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,10 @@
14481448
"Restricted": "本次登录受到访问控制限制。",
14491449
"ReviewGroupDescription": "以下资产需要审批,确认后将一次性提交全部申请。",
14501450
"FaceGroupDescription": "以下资产需要人脸验证,将在当前窗口中逐项完成。",
1451+
"FacePageUnavailable": "人脸验证页面未能加载,请重试。",
1452+
"FaceRequestTimedOut": "获取人脸验证令牌超时,请重试。",
1453+
"FaceVerificationTimedOut": "人脸验证超时,请重试或取消。",
1454+
"FaceVerificationFailed": "人脸验证未完成。",
14511455
"ErrorGroupDescription": "以下资产遇到了相同类型的登录限制。",
14521456
"Assignees": "受理人:{value}",
14531457
"SubmitAll": "全部提交审批",
@@ -1582,6 +1586,15 @@
15821586
"ConnectingHint": "正在建立安全连接,请保持此窗口开启",
15831587
"CameraReady": "摄像头已就绪",
15841588
"LookStraight": "请正视摄像头,并将面部保持在引导框内",
1589+
"Guidance": {
1590+
"multiple_faces": "检测到多人,请确保画面中只有您一人",
1591+
"face_missing": "请将面部完整置于取景框内",
1592+
"too_far": "请靠近摄像头",
1593+
"replayed_frame": "画面重复或静止,请检查摄像头并自然移动",
1594+
"identity_mismatch": "当前面容与绑定人脸不符,请确认是本人",
1595+
"template_mismatch": "人脸特征模型已更换,请重新绑定人脸",
1596+
"liveness": "正在检测活体,请保持光线充足并自然移动"
1597+
},
15851598
"CapturingSamples": "正在采集人脸样本 {accepted}/{required}",
15861599
"Completed": "人脸验证已完成",
15871600
"Failed": "人脸验证失败",

‎i18n/locales/zh_hant.json‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,10 @@
14481448
"Restricted": "本次登入受到存取控制限制。",
14491449
"ReviewGroupDescription": "以下資產需要審批,確認後將一次性提交全部申請。",
14501450
"FaceGroupDescription": "以下資產需要人臉驗證,將在當前視窗中逐項完成。",
1451+
"FacePageUnavailable": "人臉驗證頁面未能載入,請重試。",
1452+
"FaceRequestTimedOut": "取得人臉驗證權杖逾時,請重試。",
1453+
"FaceVerificationTimedOut": "人臉驗證逾時,請重試或取消。",
1454+
"FaceVerificationFailed": "人臉驗證尚未完成。",
14511455
"ErrorGroupDescription": "以下資產遇到了相同類型的登入限制。",
14521456
"Assignees": "受理人:{value}",
14531457
"SubmitAll": "全部提交審批",
@@ -2467,6 +2471,15 @@
24672471
"ConnectingHint": "正在建立安全連接,請保持此窗口開啓",
24682472
"CameraReady": "攝像頭已就緒",
24692473
"LookStraight": "請正視攝像頭,並將面部保持在引導框內",
2474+
"Guidance": {
2475+
"multiple_faces": "偵測到多人,請確保畫面中只有您一人",
2476+
"face_missing": "請將臉部完整置於取景框內",
2477+
"too_far": "請靠近攝像頭",
2478+
"replayed_frame": "畫面重複或靜止,請檢查攝像頭並自然移動",
2479+
"identity_mismatch": "目前的臉部與已綁定的人臉不符",
2480+
"template_mismatch": "人臉特徵模型已更換,請重新綁定人臉",
2481+
"liveness": "正在偵測活體,請保持光線充足並自然移動"
2482+
},
24702483
"CapturingSamples": "正在採集人臉樣本 {accepted}/{required}",
24712484
"Completed": "人臉驗證已完成",
24722485
"Failed": "人臉驗證失敗",

0 commit comments

Comments
 (0)