Method: vdc.provisionMobileSecurityObjects

Ein Endpunkt, um einen Berechtigungsnachweis bereitzustellen.

HTTP-Anfrage

POST https://example.issuer.com/api/v1/vdc/provisionMobileSecurityObjects

Anfragetext

Der Anfragetext enthält Daten mit folgender Struktur:

JSON-Darstellung
{
  "requestMetadata": {
    object (RequestMetadata)
  },
  "deviceReferenceId": string,
  "credentialId": string,
  "authKeys": [
    {
      object (AuthKey)
    }
  ],
  "proofOfProvisioning": {
    object (ProofOfProvisioning)
  },
  "deviceEncryptionKey": {
    object (DeviceEncryptionKey)
  },
  "credentialVersionId": string
}
Felder
requestMetadata

object (RequestMetadata)

Erforderlich. Die Metadaten zur Anfrage, erforderlich in allen Anfragen.

deviceReferenceId

string

Erforderlich. Die zum Gerät gehörende ID und der mit dem Gerät verknüpfte Identitätsschlüssel. Dabei handelt es sich NICHT um eine Geräte-ID. Wenn ein Nutzer zwei verschiedene Ausweisdokumente auf demselben Gerät verwendet, unterscheidet sich diese ID bei beiden voneinander.

Diese ID wird in allen Anfragen angegeben und kann zur Korrelation von Anfragen verwendet werden.

credentialId

string

Erforderlich. Eine intransparente Kennung, die einen bestimmten Berechtigungsnachweis auf einem Gerät darstellt.

Beispiel: UUID

authKeys[]

object (AuthKey)

Erforderlich. Eine Liste der x509-Zertifikate, die zertifiziert werden müssen, um als mobile Sicherheitsobjekte (Mobile Security Objects, MSOs) verwendet werden zu können. Jedes Zertifikat wird vom Berechtigungsnachweisschlüssel des Geräts signiert.

proofOfProvisioning

object (ProofOfProvisioning)

Erforderlich. Ein Objekt vom Gerät, das die korrekte Bereitstellung des Berechtigungsnachweises belegt. Weitere Informationen findest du in der Objektdefinition.

Hinweis: Das Objekt wird nur bei der ersten Bereitstellung von MSOs angegeben, nachdem der Berechtigungsnachweis bereitgestellt wurde. Bei Verwendung dieser Methode für MSO-Aktualisierungen wird es nicht angegeben.

deviceEncryptionKey

object (DeviceEncryptionKey)

Erforderlich. Ein Objekt, das den sitzungsspezifischen Verschlüsselungsschlüssel und die zugehörigen Metadaten enthält. Dieser Schlüssel wird zur Verschlüsselung eines Werts auf dem Gerät verwendet. Das Objekt darf beim Einrichtungsprozess nicht in der Sandbox-Umgebung verwendet werden, um anzugeben, dass der Aussteller Klartextdaten zurückgeben sollte. Dies sollte immer in der Produktionsumgebung erfolgen.

credentialVersionId

string

Erforderlich. Die Versionsnummer des Ausweisdokuments, die das Gerät aktuell hat. Damit sollten KEINE MSOs (Mobile Security Objects) für alte Versionen von Ausweisdokumenten bereitgestellt werden. Wenn diese Angabe nicht mit der aktuellen, im Datensatz des Ausstellers bereitgestellten Version übereinstimmt, sollte stattdessen eine ErrorResponse mit InvalidState zurückgegeben werden.

Antworttext

Eine Antwort, die das Ergebnis der Bereitstellung von mobilen Sicherheitsobjekten enthält.

Bei Erfolg enthält der Antworttext Daten mit der folgenden Struktur:

JSON-Darstellung
{
  "responseMetadata": {
    object (ResponseMetadata)
  },
  "mobileSecurityObjects": [
    {
      object (MobileSecurityObject)
    }
  ]
}
Felder
responseMetadata

object (ResponseMetadata)

Erforderlich. Die Metadaten zur Antwort, erforderlich in allen Antworten.

mobileSecurityObjects[]

object (MobileSecurityObject)

Erforderlich. Eine Liste der MobileSecurityObjects, die bereit sind. Diese Liste kann leer sein, wenn derzeit keine MobileSecurityObjects bereit sind.

AuthKey

Ein vom Berechtigungsnachweisschlüssel des Geräts signiertes x509-Zertifikat, das vom Aussteller zertifiziert werden muss.

Diese Zertifikate werden vom Wallet über die Android Identity Credential API abgerufen und sind unter https://developer.android.com/reference/android/security/identity/IdentityCredential#getAuthKeysNeedingCertification() dokumentiert.

JSON-Darstellung
{

  // Union field presencetype can be only one of the following:
  "encryptedData": {
    object (EncryptedData)
  },
  "unencryptedValue": string
  // End of list of possible types for union field presencetype.
}
Felder
Union-Feld presencetype Erforderlich. Ein oneof, das angibt, wie der AuthKey vorgelegt wird. Für presencetype ist nur einer der folgenden Werte zulässig:
encryptedData

object (EncryptedData)

Der verschlüsselte Wert und die Verschlüsselungsmetadaten, die zum Entschlüsseln des Werts erforderlich sind.

unencryptedValue

string

Der base64-codierte Wert des AuthKey.

ProofOfProvisioning

Eine vom Berechtigungsnachweisschlüssel des Geräts signierte COSE_Sign1-Struktur, die angibt, dass der zugehörige Berechtigungsnachweis korrekt im sicheren Speicher des Geräts bereitgestellt wurde.

Diese Struktur wird von der Android Identity Credential API definiert und ist unter https://developer.android.com/reference/android/security/identity/WritableIdentityCredential#personalize(android.security.identity.PersonalizationData) dokumentiert.

JSON-Darstellung
{

  // Union field presencetype can be only one of the following:
  "encryptedData": {
    object (EncryptedData)
  },
  "unencryptedValue": string
  // End of list of possible types for union field presencetype.
}
Felder
Union-Feld presencetype Erforderlich. Ein oneof, das angibt, wie der ProofOfProvisioning vorgelegt wird. Für presencetype ist nur einer der folgenden Werte zulässig:
encryptedData

object (EncryptedData)

Der verschlüsselte Wert und die Verschlüsselungsmetadaten, die zum Entschlüsseln des Werts erforderlich sind.

unencryptedValue

string

Der base64-codierte Wert des ProofOfProvisioning.

MobileSecurityObject

Ein Objekt, in dem die von jedem Datenelement im Berechtigungsnachweis berechneten Digests verborgen sind. Dies wird als statische Authentifizierungsdaten dargestellt, was das erforderliche Format für die Android Identity Credential-Bibliothek ist. Weitere Informationen zur Erstellung statischer Authentifizierungsdaten finden Sie hier.

JSON-Darstellung
{
  "expirationTimeMillis": string,

  // Union field presencetype can be only one of the following:
  "encryptedData": {
    object (EncryptedData)
  },
  "unencryptedValue": string
  // End of list of possible types for union field presencetype.
}
Felder
expirationTimeMillis

string (int64 format)

Ein Zeitstempel, der angibt, wann das mobile Sicherheitsobjekt abläuft. Der Zeitstempel wird als Anzahl der Millisekunden seit der Unix-Epoche angegeben.

Union-Feld presencetype Erforderlich. Ein oneof, das angibt, wie der Berechtigungsnachweis vorgelegt wird. Für presencetype ist nur einer der folgenden Werte zulässig:
encryptedData

object (EncryptedData)

Der verschlüsselte Wert und die Verschlüsselungsmetadaten, die zum Entschlüsseln des Werts erforderlich sind.

unencryptedValue

string

Der base64-codierte Wert des Berechtigungsnachweises.