Dokumentácia / Riešenie problémov / Povolenie kamery vo webovej aplikácii

Povolenie kamery vo webovej aplikácii

Úvod a orientácia

Prístup ku kamere povoľuje podpora poskytovateľa softvéru pre konkrétne zariadenie a schválené dôveryhodné domény.

Prečo kamera nie je automaticky povolená

Webové aplikácie bežia vo vstavanom prehliadači Chromium prostredníctvom JCEF. Automatický prístup ku kamere nie je v štandardnej konfigurácii globálne povolený. Chránime tým súkromie a zachovávame kontrolu nad tým, ktoré webové stránky môžu kameru používať. Samotné pripojenie USB kamery preto nestačí.

Postup kontroly a riešenia

Ako požiadať o povolenie

Ak vaša aplikácia potrebuje kameru, obráťte sa na svojho poskytovateľa softvéru. Spoločne overíte potrebné nastavenie a podpora zabezpečí povolenie pre dôveryhodnú doménu. Spravidla ide o malý a rýchly servisný zásah, ktorý vykonáva podpora poskytovateľa predovšetkým kvôli ochrane súkromia a bezpečnému prístupu ku kamere. Programové súbory nemusíte upravovať sami.

Na začiatok stačí poslať ID zariadenia, odkaz na aplikáciu alebo jej doménu a informáciu, či potrebujete aj mikrofón. Prípadné ďalšie údaje s vami podpora doplní počas riešenia.

Čo zabezpečí technická podpora

Nasledujúci servisný postup je určený podpore poskytovateľa. Konkrétna úprava závisí od verzie prehrávača a JCEF; povolenie podľa domén je požiadavka na výsledné riešenie, nie potvrdenie, že je dostupné v každej inštalácii.

Prevzatie a úprava súboru latest.jar

Podpora najprv na zariadení zistí skutočný cieľ odkazu /opt/device/runtime/latest.jar a stiahne tento aktuálne používaný JAR. Pôvodný súbor samostatne zazálohuje, zaznamená jeho cestu, verziu a kontrolný súčet. Úpravu pripraví na stiahnutej kópii; funkčný originál ponechá pre prípad návratu.

Úprava prehrávacej aplikácie

Podpora overí runtime súbor /opt/device/runtime/latest.jar a verziu JCEF. V prehrávači zabezpečí obsluhu požiadaviek na kameru a porovnanie skutočného pôvodu požiadavky so schváleným zoznamom. Pôvod zahŕňa protokol, doménu a port. Zhoda časti textu v URL nestačí.

Povolia sa iba schválené pôvody. Ďalšie subdomény, porty, presmerovania a vložené stránky sa preveria samostatne. Mikrofón sa povolí iba vtedy, ak ho aplikácia potrebuje a poskytovateľ ho schválil. Ostatné požiadavky musia zostať nepovolené.

Podpora použije rozhranie oprávnení dostupné v danej verzii JCEF. Ak potrebné riadenie nepodporuje, pripraví kompatibilnú aktualizáciu. Úprava nesmie zaviesť plošné automatické povolenie pre všetky webové stránky.

Ktorých tried sa úprava týka

Trieda org/cef/handler/CefAppHandlerAdapter.class a metóda onBeforeCommandLineProcessing() zabezpečujú prípravu štartovacích parametrov Chromia. Podpora tu overí a podľa potreby upraví nastavenia súvisiace s médiami. Táto metóda sama nerozhoduje podľa domény stránky, a preto nie je jediným miestom na zavedenie prístupu obmedzeného na dôveryhodné domény.

Rozhodovanie musí zabezpečiť obsluha oprávnení pripojená ku klientovi org.cef.CefClient. V kompatibilnej verzii JCEF ide o implementáciu rozhrania org.cef.handler.CefPermissionHandler s metódou onRequestMediaAccessPermission(). Podpora pridá vlastnú implementačnú triedu, napríklad TrustedCameraPermissionHandler — tento názov je návrh novej triedy, nie povinný existujúci súbor. Obsluha prevezme pôvod žiadajúcej stránky a požadovaný typ prístupu, porovná ich s povoleným zoznamom a cez odpovedný callback povolí iba zodpovedajúce oprávnenia; ostatné požiadavky výslovne zamietne.

Pred implementáciou treba overiť skutočné rozhrania konkrétneho JAR. Ak v ňom CefPermissionHandler nie je, samotné pridanie jednej triedy nestačí. Treba zabezpečiť kompatibilné Java rozhranie aj natívne knižnice JCEF alebo iné overené riadenie oprávnení pre túto verziu. Upravené triedy sa skompilujú pre zodpovedajúcu verziu Javy a zabalia do runtime JAR. Trieda module-info.class prístup ku kamere neriadi; kvôli samotnému povoleniu kamery ju netreba meniť.

Oprávnenia v operačnom systéme

Na zariadení podpora overí pripojenie kamery, prítomnosť zodpovedajúceho zariadenia /dev/video* a účet, pod ktorým prehrávač skutočne beží. Overí vlastníka a skupinu kamerového zariadenia.

Príkaz pre podporu:

ls -l /dev/video*

Ak kamerové zariadenie používa skupinu video a účet prehrávača v nej nie je, podpora ho pridá. Nasledujúci príklad platí iba po overení, že účet sa skutočne volá kiosk.

Príkaz pre podporu:

sudo usermod -aG video kiosk

Nové členstvo v skupine sa prejaví v novej používateľskej relácii alebo po reštarte. Samotné systémové oprávnenie nenahrádza povolenie vo webovom prehliadači.

Záloha a nahradenie súboru na zariadení

Pred zásahom podpora zistí skutočný cieľ odkazu latest.jar, zaznamená verziu a vytvorí samostatnú zálohu pôvodného súboru. Záloha musí mať nový názov, aby sa neprepísala staršia záloha.

Príkaz pre podporu:

readlink -f /opt/device/runtime/latest.jar

Po overení úpravy podpora nahrá upravený JAR späť na rovnaké zariadenie. V servisnom čase zastaví prehrávač, zachová pôvodnú zálohu a nahradí používanú verziu upravenou, prípadne prepne odkaz latest.jar na novú verziu. Overí vlastníctvo, oprávnenia a kontrolný súčet. Pôvodný súbor nevymaže.

Podpora overí systémové oprávnenia a správanie automatických aktualizácií. Potom reštartuje prehrávač, prípadne zariadenie, a skontroluje kameru v schválenej aplikácii. Ak sa objaví problém, vráti pôvodnú zazálohovanú verziu.

Súvisiace témy a ďalšie kroky

Overenie funkčnosti

Po reštarte musí schválená aplikácia zobraziť obraz zo skutočnej kamery a po ukončení funkcie kameru uvoľniť. Neschválené domény nesmú získať prístup. Overí sa aj mikrofón podľa schváleného rozsahu, bežné prehrávanie, zvuk a stabilita.

Pri probléme podpora obnoví pôvodnú verziu a overí prevádzku. Do servisného záznamu uloží zoznam schválených pôvodov, verziu runtime, kontrolný súčet, zmeny oprávnení a výsledok overenia.

Nenašli ste, čo ste hľadali?
Obráťte sa na svojho poskytovateľa softvéru.