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 kioskNové č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.jarPo 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í.
Obraťte se na svého poskytovatele softwaru.
