Start · Sprachen · JavaScript · Referenz · RTCPeerConnection.peerIdentity

RTCPeerConnection.peerIdentity

Eigenschaft

Schreibgeschützte Eigenschaft: ein Promise, das auf eine <code>RTCIdentityAssertion</code> mit der geprüften Identität des entfernten Peers aufgelöst wird.

seit JavaScript Nur Firefox (seit Version 36); Chrome, Edge und Sa Kategorie: webapi

Signatur

RTCPeerConnection.peerIdentity

Beschreibung

Die schreibgeschützte Eigenschaft peerIdentity von RTCPeerConnection gehört zur WebRTC-Identity-API (WebRTC Identity for WebRTC 1.0). Sie liefert ein Promise, das auf ein RTCIdentityAssertion-Objekt aufgelöst wird. Dieses Objekt hat zwei Eigenschaften: idp (die Domain des Identitätsanbieters, kurz IdP) und name (die geprüfte Identität des entfernten Peers, z. B. alice@example.com).

Das Promise wird erst aufgelöst, wenn die Gegenseite eine Identitätszusicherung (Assertion) in ihrer SDP-Beschreibung mitgeschickt hat und der Browser diese beim IdP prüfen konnte. Die Assertion entsteht auf der Gegenseite über setIdentityProvider(), der Browser prüft sie beim Aufruf von setRemoteDescription(). Scheitert die Prüfung, wird das Promise abgelehnt. Danach wird ein neues Promise erzeugt, das auf den nächsten Prüfversuch wartet. Sobald eine Identität einmal bestätigt ist, bleibt sie für diese Verbindung fest.

Die Eigenschaft hilft bei Anwendungen, die sich nicht allein auf den Signalisierungsserver verlassen wollen, sondern Ende-zu-Ende sicherstellen müssen, wer am anderen Ende sitzt – zum Beispiel bei vertraulichen Videokonferenzen. In der Praxis wird sie wegen der sehr geringen Browser-Unterstützung aber kaum genutzt.

Rückgabewert

Typ
Promise<RTCIdentityAssertion>
Beschreibung
Ein Promise, das auf ein Objekt { idp: string, name: string } aufgelöst wird: idp ist die Domain des Identitätsanbieters, name die geprüfte Identität des Peers. Schlägt die Prüfung fehl, wird das Promise abgelehnt.

Beispiele

Identität des entfernten Peers auslesen

const pc = new RTCPeerConnection();

// Nur fortfahren, wenn der Browser die Identity-API kennt
if ('peerIdentity' in pc) {
  pc.peerIdentity
    .then(({ idp, name }) => {
      console.log(`Peer bestätigt: ${name} (IdP: ${idp})`);
    })
    .catch((err) => {
      console.warn('Identität konnte nicht geprüft werden:', err.name);
    });
} else {
  console.log('peerIdentity wird von diesem Browser nicht unterstützt.');
}
Peer bestätigt: alice@example.com (IdP: idp.example.com)

Mit async/await und Zeitlimit prüfen

const waitForPeerIdentity = async (pc, timeoutMs = 10000) => {
  if (!('peerIdentity' in pc)) {
    throw new Error('Identity-API nicht verfügbar');
  }
  const timeout = new Promise((_, reject) =>
    setTimeout(() => reject(new Error('Zeitüberschreitung')), timeoutMs)
  );
  return Promise.race([pc.peerIdentity, timeout]);
};

const pc = new RTCPeerConnection();

// Nach Eingang der Remote-Beschreibung aus der Signalisierung:
const onRemoteOffer = async (offer) => {
  await pc.setRemoteDescription(offer);
  try {
    const { name } = await waitForPeerIdentity(pc);
    document.querySelector('#peer-name').textContent = name;
  } catch (err) {
    console.warn('Peer ist nicht verifiziert:', err.message);
  }
};

Eigene Identität setzen, damit die Gegenseite sie prüfen kann

const pc = new RTCPeerConnection();

// Identitätsanbieter festlegen (nur Firefox)
pc.setIdentityProvider('idp.example.com', {
  protocol: 'default',
  usernameHint: 'bob@example.com'
});

const offer = await pc.createOffer();
await pc.setLocalDescription(offer);
// Das SDP enthält jetzt eine a=identity-Zeile,
// die die Gegenseite über peerIdentity prüfen kann.
console.log(pc.localDescription.sdp.includes('a=identity'));
true

// Wichtig · Fallstricke

  • Browser-Kompatibilität: Nur Firefox unterstützt peerIdentity. Chromium-Browser und Safari haben die Identity-API nie umgesetzt. Deshalb immer mit 'peerIdentity' in pc prüfen, ob die Eigenschaft vorhanden ist.
  • Das Promise bleibt unerfüllt, solange die Gegenseite keine Identität mitschickt. Ohne Zeitlimit wartet dein Code also womöglich ewig.
  • Nach einer fehlgeschlagenen Prüfung wird ein neues Promise erzeugt. Eine alte Referenz auf pc.peerIdentity zeigt dann noch auf das abgelehnte Promise, deshalb die Eigenschaft bei Bedarf neu auslesen.
  • Sicherheit: Die Identität ist nur so vertrauenswürdig wie der IdP. Prüfe idp gegen eine Liste zugelassener Anbieter, bevor du name für Berechtigungen verwendest. Den Wert von name nicht ungeprüft per innerHTML einfügen, sonst droht XSS. Besser textContent verwenden.
  • Die Identity-API setzt einen sicheren Kontext (HTTPS) voraus.