Folgen Sie der Anleitung auf dieser Seite, um den AAOS Debugging Restriction Controller zu integrieren Demokratische Republik Kongo.
Abbildung 1: Beispiel für eine DRC-Anwendung
Architektur
Die Architektur der Demokratischen Republik Kongo ist in Abbildung 2 dargestellt. Rot umrandete Komponenten (Tokenaussteller und DRC) zugehörige Referenzimplementierungen, die Sie anpassen können.
Abbildung 2: Architektur des DRC.
Was ist die Demokratische Republik Kongo?
Das Infotainmentsystem des Autos enthält die DRC App (siehe Referenzimplementierung in
packages/apps/Car/DebuggingRestrictionController
. Die Referenz-App enthält
die Logik für den Empfang eines Zugriffstokens vom Tokenaussteller, das Validieren des Tokens und
und anschließend die im Token angegebenen
Einschränkungen zur Fehlerbehebung anwenden. Die Logik enthält
grundlegende UX-Elemente
auf der Autoseite.
Was ist der Tokenaussteller?
Dies ist ein Webdienst, der kryptografisch signierte Zugriffstokens ausgibt (siehe Referenz).
Implementierung in packages/apps/Car/DebuggingRestrictionController/server
).
Der Referenzwebdienst ist eine bereitstellbare Firebase Cloud-Funktion (weitere Informationen finden Sie unter
Cloud Functions für
Firebase) ausführen.
Voraussetzungen
Bevor Sie eine Referenzimplementierung bereitstellen, müssen Sie die folgenden Aufgaben ausführen.
Zertifikate zum Signieren von Zugriffstokens vorbereiten
Der Tokenaussteller generiert JSON-Websignaturen (JWS) als Zugriffstoken. Für optimale Kompatibilität, unterstützt der Referenzaussteller nur den RSA-Algorithmus (RSA-Signaturen mit SHA256). Verwenden Sie zum Signieren eine Zertifikatskette anstelle eines einzelnen Zertifikats, um die Schlüsselrotation zu erleichtern Zugriffstokens. Eine typische Zertifikatskette besteht aus einem Zertifikat einer Stammzertifizierungsstelle, einem ein Zwischen-CA-Zertifikat und ein Endentitätszertifikat.
Das Zertifikat der Endentität zum Signieren der JWS-Tokens unterscheidet sich nicht von einem Standard-TLS-Zertifikat. Zertifikat. Sie können entweder ein Zertifikat von öffentlichen Zertifizierungsstellen wie DigiCert erwerben Ihre eigene Zertifikatskette mithilfe selbst signierter Root-CA-Zertifikate oder Hardware-Sicherheitsmodulen erstellen. Das Zertifikat der Endentität sollte ein X509v3-Zertifikat mit einem alternativen Antragstellernamen sein SAN-Erweiterung. Die SAN-Erweiterung enthält eine Kennung (z. B. den Hostnamen) des Tokens. Aussteller. RSA-Zertifikate sollten gegenüber EC-Zertifikaten bevorzugt werden, da das Token Der Aussteller unterstützt nur RS256.
Google stellt ein Shell-Skript zum Generieren selbst signierter Zertifikate in
packages/apps/Car/DebuggingRestrictionController/server/genkey.sh
Firebase einrichten
Der Aussteller des Referenztokens verwendet Firebase Authentication und Firebase Cloud Functions-Funktion
So richten Sie Ihr Firebase-Konto ein:
- Informationen zum Erstellen eines Firebase-Projekts finden Sie unter Firebase hinzufügen zu Ihr Android-Projekt.
- Informationen zum Aktivieren einiger Firebase-Authenticatoren finden Sie unter Wo kann ich mit Firebase Authentication beginnen?
- Informationen zum Hinzufügen einer leeren Firebase Cloud-Funktion finden Sie unter Holen Sie sich Gestartet.
- Falls noch nicht geschehen, installieren Sie die
Node.js
-, NPM- und Firebase-Tools, um zu kompilieren und Stellen Sie den Tokenaussteller bereit. <ph type="x-smartling-placeholder">
DRC-Anwendung einbinden
Die Referenz-App für die DRC befindet sich in
packages/apps/Car/DebuggingRestrictionController
Die App kann
gebündelt in AOSP mit Soong oder
mit Gradle entbündelt wurde.
Gebündelter Build
So erstellen Sie eine gebündelte Anwendung:
applicationId
,projectId
undapiKey
kopieren vongoogle-services.json
nachpackages/apps/Car/DebuggingRestrictionController/soong/FirebaseApplication.java
Dadurch kann die DRC-App eine korrekte Verbindung zu Firebase herstellen.- Aktualisieren Sie diese Konstanten in
packages/apps/Car/DebuggingRestrictionController/soong/BuildConfig.java
: <ph type="x-smartling-placeholder">- </ph>
TOKEN_USES_SELF_SIGNED_CA
gibt an, ob selbstsignierte Root-CA-Zertifikate verwendet. Wenn diese Option aktiviert ist, vertraut die DRC-App nur dem PEM-codierten Root-CA-Zertifikat, das imROOT_CA_CERT
TOKEN_ISSUER_API_NAME
ist der Name der Firebase Cloud Functions-Funktion und sollte mit der Cloud Functions-Funktion übereinstimmen, die Sie zuvor in der Firebase Console erstellt haben.TOKEN_ISSUER_HOSTNAME
sollte mit dem alternativen Antragstellernamen in der Endentitätszertifikat, mit dem die Zugriffstokens signiert werden.DRC_TEST_EMAIL
undDRC_TEST_PASSWORD
sind Anmeldedaten für ein optionales Testkonto, das in Firebase vorab bereitgestellt werden kann, falls Sie Anmeldung mit E-Mail-Adresse und Passwort. Sie werden nur für instrumentierte Tests verwendet.
Die App ist jetzt für die Verwendung Ihres Firebase-Kontos und Ihrer Zertifikate konfiguriert.
Unter Android 9 und höher müssen Sie
Zulassungsliste für privilegierte Berechtigungen
Die Zulassungsliste muss mindestens android.permission.MANAGE_USERS
enthalten. Beispiel:
<permissions> <privapp-permissions package="com.android.car.debuggingrestrictioncontroller"> <permission name="android.permission.INTERNET"/> <permission name="android.permission.MANAGE_USERS"/> </privapp-permissions> </permissions>
Nicht gebündelter Build
Nicht gebündelte DRC-Builds verwenden Gradle, um die App zu kompilieren.
So erstellen Sie einen entbündelten Build:
- Prüfen Sie, ob Sie das Android SDK installiert haben.
- Erstellen Sie im Stammverzeichnis der Anwendung eine Textdatei mit dem Namen
local.properties
. - Legen Sie den Speicherort des Android SDK fest:
sdk.dir=path/to/android/sdk
- Wenn Sie Firebase einrichten möchten, kopieren Sie
google-services.json
nachpackages/apps/Car/DebuggingRestrictionController/app
. Gradle parst die Datei. und der Rest werden automatisch eingerichtet. - Definieren Sie die Umgebungsvariablen. Wie bei gebündelten Builds müssen Sie Folgendes angeben:
<ph type="x-smartling-placeholder">
- </ph>
$TOKEN_USES_SELF_SIGNED_CA
: true oder false;$ROOT_CA_CERT
: Pfad zum PEM-codierten Stammzertifikat der Zertifizierungsstelle$TOKEN_ISSUER_API_NAME
: Name der Firebase Cloud Functions-Funktion$TOKEN_ISSUER_HOST_NAME
: SAN im Zertifikat.$DRC_TEST_EMAIL
und$DRC_TEST_EMAI
L: Anmeldedaten für einen Test -Konto, nur Debug-Builds.
- Führen Sie einen Befehl wie den folgenden aus, um die App mit Gradle zu erstellen:
$ ./gradlew build
<ph type="x-smartling-placeholder">
Tokenaussteller einbinden
Der Aussteller des Referenztokens ist eine Firebase Cloud Functions-Funktion, die in Node.js
implementiert ist.
Die Funktion kann nur von einem authentifizierten Nutzer aufgerufen werden. Vor dem Bereitstellen der Anwendung müssen Sie Folgendes festlegen:
privaten Schlüssel und Zertifikate zum Signieren der JWS-Tokens abrufen
- Füllen Sie eine JSON-Datei mit folgendem Inhalt:
{ "key": "---BEGIN PRIVATE KEY---\nRSA_PRIVATE_KEY\n-----END PRIVATE KEY-----\n", "certificates.0": "-----BEGIN CERTIFICATE-----\nTOKEN_SIGNING_CERT\n-----END CERTIFICATE-----\n", "certificates.1": "-----BEGIN CERTIFICATE-----\nINTERMEDIATE_CA_CERT\n-----END CERTIFICATE-----\n", "certificates.2": "-----BEGIN CERTIFICATE-----\nROOT_CA_CERT\n-----END CERTIFICATE-----\n", "expiration": "30m", "issuer": "Debugging Access Token Issuer", "audience": "IHU" }
Zertifikate werden so geordnet, dass zuerst das Zertifikat der Endentität und das Zertifikat der Stammzertifizierungsstelle angezeigt werden am Ende. Die Ablauffrist ist anpassbar und kann auf eine längere Dauer festgelegt werden, wenn ein Es dauert einige Zeit, bis das ausgestellte Token von einer DRC-Anwendung empfangen und genutzt werden kann. Token Widerruf wird nicht unterstützt.
- Laden Sie die Konfiguration in Firebase hoch:
- Stellen Sie die Firebase Cloud-Funktion bereit:
- Informationen zum Verwalten und Überwachen des Tokenausstellers finden Sie unter Verwalten Optionen für Bereitstellung und Laufzeit von Funktionen.
$ firebase functions:config:set api_config="$(cat YOUR_CONFIG.json)"
$ firebase deploy --only functions
Standardeinschränkungen festlegen
Standardeinschränkungen können vor dem ersten Start angewendet werden. Mit einer statischen Ressource ausführen Overlays, um die Standardeinstellungen im Android-Framework zu überschreiben. Einschränkungen können jeweils auf verschiedene Arten von Nutzern angewendet. Weitere Informationen zu den verschiedenen Nutzertypen finden Sie unter Unterstützung mehrerer Nutzer.
Die Standardeinschränkung für monitorlose Systemnutzer kann konfiguriert werden mit
das String-Array config_defaultFirstUserRestrictions
in
frameworks/base/core/res/res/values/config.xml
. Diese Einschränkung festlegen
deaktiviert Android Debug Bridge (ADB) automatisch, bis die Einschränkung aufgehoben wird.
Beispiel:
<string-array translatable="false" name="config_defaultFirstUserRestrictions"> <item>no_debugging_features</item> </string-array>
Die Standardeinschränkungen für reguläre Nutzer (z. B. Fahrer und Beifahrer)
und Gäste können hier konfiguriert werden:
frameworks/base/core/res/res/xml/config_user_types.xml
Sie können diese übereinanderlegen,
Strings zum Festlegen der Standardeinschränkungen für jeden Nutzertyp. Beispiel:
<user-types> <full-type name="android.os.usertype.full.SECONDARY" > <default-restrictions no_debugging_features="true"/> </full-type> <full-type name="android.os.usertype.full.GUEST" > <default-restrictions no_debugging_features="true"/> </full-type> </user-types><ph type="x-smartling-placeholder">