Разрешаване на достъп до камерата в уеб приложение
Въведение и ориентация
Екипът за поддръжка на вашия доставчик на софтуер разрешава достъпа до камерата за конкретно устройство и одобрени доверени домейни.
Защо достъпът до камерата не се разрешава автоматично
Уеб приложенията работят във вграден браузър Chromium чрез JCEF. В стандартната конфигурация автоматичният достъп до камерата не е разрешен глобално. Това защитава поверителността и запазва контрола върху уебсайтовете, които могат да използват камерата. Затова само свързването на USB камера не е достатъчно.
Проверки и отстраняване на проблеми
Заявка за достъп до камерата
Ако приложението ви се нуждае от камера, свържете се с доставчика на софтуера. Заедно можете да проверите необходимите настройки, а поддръжката ще разреши достъпа за доверения домейн. Обикновено това е малка и бърза сервизна настройка, извършвана от екипа по поддръжка на доставчика преди всичко за защита на поверителността и сигурен достъп до камерата. Не е необходимо сами да променяте програмни файлове.
За начало изпратете ID на устройството, връзката или домейна на приложението и посочете дали ви е необходим и микрофон. При нужда поддръжката ще уточни с вас допълнителните подробности.
Какво ще направи техническата поддръжка
Сервизната процедура по-долу е предназначена за екипа по поддръжка на доставчика. Необходимите промени зависят от версиите на плейъра и JCEF. Ограничаването по домейни е изискване към крайното решение, а не твърдение, че всяка инсталация вече го поддържа.
Извличане и промяна на latest.jar
Поддръжката първо установява действителната цел на /opt/device/runtime/latest.jar на устройството и изтегля използвания JAR файл. Създава отделно резервно копие на оригинала и записва пътя, версията и контролната му сума. Промените се подготвят върху изтегленото копие, като работещият оригинал се запазва за възстановяване.
Актуализиране на приложението на плейъра
Поддръжката проверява файла /opt/device/runtime/latest.jar и версията на JCEF. Плейърът трябва да обработва заявките за разрешение за камерата и да сравнява действителния origin на заявката с одобрен списък. Origin се състои от схема, домейн и порт. Съвпадение само на откъс от текст в URL адрес не е достатъчно.
Могат да се разрешават само одобрени origin адреси. Допълнителни поддомейни, портове, пренасочвания и вградени страници трябва да се оценяват отделно. Достъпът до микрофона се разрешава само ако приложението се нуждае от него и доставчикът го е одобрил. Всички останали заявки трябва да останат отказани.
Поддръжката използва интерфейса за разрешения, наличен в инсталираната версия на JCEF. Ако той не осигурява необходимия контрол, поддръжката подготвя съвместима актуализация. Промяната не трябва да разрешава автоматичен достъп за всички уебсайтове.
Класове, участващи в промяната
Класът org/cef/handler/CefAppHandlerAdapter.class и неговият метод onBeforeCommandLineProcessing() подготвят параметрите за стартиране на Chromium. Тук поддръжката проверява и при необходимост коригира настройките, свързани с медийни устройства. Самият метод не взема решения според домейна на заявката, затова не може да бъде единственото място за прилагане на достъп, ограничен до доверени домейни.
Решенията за разрешения изискват обработчик, свързан с клиента org.cef.CefClient. В съвместима версия на JCEF това означава реализиране на org.cef.handler.CefPermissionHandler и неговия метод onRequestMediaAccessPermission(). Поддръжката добавя собствен клас за реализация, например TrustedCameraPermissionHandler — това е предложено име за нов клас, а не задължително съществуващ файл. Обработчикът получава origin адреса на страницата и заявения тип достъп, проверява ги спрямо списъка с разрешени и използва обратното извикване за отговор, за да предостави само съответстващите разрешения. Другите заявки трябва изрично да се отказват.
Преди реализацията проверете действителните интерфейси в конкретния JAR файл. Ако CefPermissionHandler липсва, добавянето само на един клас не е достатъчно. Необходими са съвместими Java bindings и нативни библиотеки JCEF или друг проверен механизъм за разрешения за съответната версия. Компилирайте променените класове за съответната версия на Java и ги включете в JAR файла на средата за изпълнение. Класът module-info.class не управлява достъпа до камерата и не е необходимо да се променя само за да бъде разрешен този достъп.
Разрешения на операционната система
На устройството поддръжката проверява свързването на камерата, съответното устройство /dev/video* и акаунта, с който действително работи плейърът. Проверява собственика и групата на устройството на камерата.
Команда за поддръжката:
ls -l /dev/video*Ако устройството на камерата принадлежи към групата video, а акаунтът на плейъра не е неин член, поддръжката го добавя. Следният пример важи само след проверка, че акаунтът действително се казва kiosk.
Команда за поддръжката:
sudo usermod -aG video kioskНовото членство в групата влиза в сила при нова потребителска сесия или след рестартиране. Самите разрешения на операционната система не заместват обработката на разрешенията в браузъра.
Архивиране и замяна на файла на устройството
Преди промени поддръжката установява действителната цел на latest.jar, записва версията и създава отделно резервно копие на оригиналния файл. Използвайте ново име за резервното копие, за да не презапишете по-старо.
Команда за поддръжката:
readlink -f /opt/device/runtime/latest.jarСлед проверка на промените поддръжката качва променения JAR файл на същото устройство. По време на сервизния прозорец спира плейъра, запазва резервното копие на оригинала и заменя активната версия с променената или пренасочва символичната връзка latest.jar към новата версия. Проверява собствеността, разрешенията и контролната сума. Оригиналният файл се запазва.
Поддръжката проверява разрешенията на операционната система и поведението на автоматичните актуализации, след което рестартира плейъра или при нужда устройството и проверява камерата в одобреното приложение. При проблем възстановява оригиналната версия от резервното копие.
Свързани теми и следващи стъпки
Проверка на работата
След рестартиране одобреното приложение трябва да показва реалния образ от камерата и да освобождава камерата при приключване на функцията. Неодобрени домейни не трябва да получават достъп. Проверете достъпа до микрофона спрямо одобрения обхват, както и нормалното възпроизвеждане, звука и стабилността.
При проблем поддръжката възстановява оригиналната версия и проверява работата. Сервизният запис трябва да включва одобрените origin адреси, версията на средата за изпълнение, контролната сума, промените в разрешенията и резултатите от проверката.
Свържете се с Вашия доставчик на софтуер.
