Dokumentace / Řešení problémů / Povolení kamery ve webové aplikaci

Povolení kamery ve webové aplikaci

Úvod a orientace

Přístup ke kameře povoluje podpora poskytovatele softwaru pro konkrétní zařízení a schválené důvěryhodné domény.

Proč kamera není automaticky povolená

Webové aplikace běží ve vestavěném prohlížeči Chromium prostřednictvím JCEF. Automatický přístup ke kameře není ve standardní konfiguraci globálně povolen. Chráníme tím soukromí a zachováváme kontrolu nad tím, které webové stránky mohou kameru používat. Samotné připojení USB kamery proto nestačí.

Postup kontroly a řešení

Jak požádat o povolení

Pokud vaše aplikace potřebuje kameru, obraťte se na svého poskytovatele softwaru. Společně ověříte potřebné nastavení a podpora zajistí povolení pro důvěryhodnou doménu. Zpravidla jde o malý a rychlý servisní zásah, který provádí podpora poskytovatele především kvůli ochraně soukromí a bezpečnému přístupu ke kameře. Programové soubory nemusíte upravovat sami.

Pro zahájení stačí poslat ID zařízení, odkaz na aplikaci nebo její doménu a informaci, zda potřebujete také mikrofon. Případné další údaje s vámi podpora doplní během řešení.

Co zajistí technická podpora

Následující servisní postup je určen podpoře poskytovatele. Konkrétní úprava závisí na verzi přehrávače a JCEF; povolení podle domén je požadavek na výsledné řešení, nikoli potvrzení, že je dostupné v každé instalaci.

Převzetí a úprava souboru latest.jar

Podpora nejprve na zařízení zjistí skutečný cíl odkazu /opt/device/runtime/latest.jar a stáhne tento aktuálně používaný JAR. Původní soubor samostatně zazálohuje, zaznamená jeho cestu, verzi a kontrolní součet. Úpravu připraví na stažené kopii; funkční originál ponechá pro případ návratu.

Úprava přehrávací aplikace

Podpora ověří runtime soubor /opt/device/runtime/latest.jar a verzi JCEF. V přehrávači zajistí obsluhu požadavků na kameru a porovnání skutečného původu požadavku se schváleným seznamem. Původ zahrnuje protokol, doménu a port. Shoda části textu v URL nestačí.

Povolí se pouze schválené původy. Další subdomény, porty, přesměrování a vložené stránky se prověří samostatně. Mikrofon se povolí pouze tehdy, pokud jej aplikace potřebuje a poskytovatel jej schválil. Ostatní požadavky musí zůstat nepovolené.

Podpora použije rozhraní oprávnění dostupné v dané verzi JCEF. Pokud potřebné řízení nepodporuje, připraví kompatibilní aktualizaci. Úprava nesmí zavést plošné automatické povolení pro všechny webové stránky.

Které třídy se úpravy týkají

Třída org/cef/handler/CefAppHandlerAdapter.class a metoda onBeforeCommandLineProcessing() zajišťují přípravu startovacích parametrů Chromia. Podpora zde ověří a podle potřeby upraví nastavení související s médii. Tato metoda sama nerozhoduje podle domény stránky, a proto není jediným místem pro zavedení přístupu omezeného na důvěryhodné domény.

Rozhodování musí zajistit obsluha oprávnění připojená ke klientovi org.cef.CefClient. V kompatibilní verzi JCEF jde o implementaci rozhraní org.cef.handler.CefPermissionHandler s metodou onRequestMediaAccessPermission(). Podpora přidá vlastní implementační třídu, například TrustedCameraPermissionHandler — tento název je návrh nové třídy, nikoli povinný existující soubor. Obsluha převezme původ žádající stránky a požadovaný typ přístupu, porovná je s povoleným seznamem a přes odpovědní callback povolí pouze odpovídající oprávnění; ostatní požadavky výslovně zamítne.

Před implementací je nutné ověřit skutečná rozhraní konkrétního JAR. Pokud v něm CefPermissionHandler není, pouhé přidání jedné třídy nestačí. Je třeba zajistit kompatibilní Java rozhraní i nativní knihovny JCEF nebo jiné ověřené řízení oprávnění pro tuto verzi. Upravené třídy se zkompilují pro odpovídající verzi Javy a zabalí do runtime JAR. Třída module-info.class přístup ke kameře neřídí; kvůli samotnému povolení kamery ji není třeba měnit.

Oprávnění v operačním systému

Na zařízení podpora ověří připojení kamery, přítomnost odpovídajícího zařízení /dev/video* a účet, pod kterým přehrávač skutečně běží. Ověří vlastníka a skupinu kamerového zařízení.

Příkaz pro podporu:

ls -l /dev/video*

Pokud kamerové zařízení používá skupinu video a účet přehrávače v ní není, podpora jej přidá. Následující příklad platí pouze po ověření, že účet se skutečně jmenuje kiosk.

Příkaz pro podporu:

sudo usermod -aG video kiosk

Nové členství ve skupině se projeví v nové uživatelské relaci nebo po restartu. Samotné systémové oprávnění nenahrazuje povolení ve webovém prohlížeči.

Záloha a nahrazení souboru na zařízení

Před zásahem podpora zjistí skutečný cíl odkazu latest.jar, zaznamená verzi a vytvoří samostatnou zálohu původního souboru. Záloha musí mít nový název, aby se nepřepsala starší záloha.

Příkaz pro podporu:

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

Po ověření úpravy podpora nahraje upravený JAR zpět na stejné zařízení. V servisním čase zastaví přehrávač, zachová původní zálohu a nahradí používanou verzi upravenou, případně přepne odkaz latest.jar na novou verzi. Ověří vlastnictví, oprávnění a kontrolní součet. Původní soubor nemaže.

Podpora ověří systémová oprávnění a chování automatických aktualizací. Poté restartuje přehrávač, případně zařízení, a zkontroluje kameru ve schválené aplikaci. Pokud se objeví problém, vrátí původní zazálohovanou verzi.

Související témata a další kroky

Ověření funkčnosti

Po restartu musí schválená aplikace zobrazit obraz ze skutečné kamery a po ukončení funkce kameru uvolnit. Neschválené domény nesmějí získat přístup. Ověří se také mikrofon podle schváleného rozsahu, běžné přehrávání, zvuk a stabilita.

Při problému podpora obnoví původní verzi a ověří provoz. Do servisního záznamu uloží seznam schválených původů, verzi runtime, kontrolní součet, změny oprávnění a výsledek ověření.

Nenašli jste, co jste hledali?
Obraťte se na svého poskytovatele softwaru.