Start · Sprachen · JavaScript · Referenz · RTCPeerConnection.setIdentityProvider()

RTCPeerConnection.setIdentityProvider()

Methode

Legt den Identity Provider (IdP) fest, über den eine <code>RTCPeerConnection</code> Identitätsnachweise (Assertions) für die Gegenseite erzeugt und prüft.

seit JavaScript Nur Firefox (experimentell, WebRTC Identity); nich Kategorie: webapi

Signatur

RTCPeerConnection.prototype.setIdentityProvider(domainName, options)

Beschreibung

setIdentityProvider() gehört zur WebRTC-Identity-Erweiterung. Mit der Methode gibt man an, welcher Identity Provider (IdP) die Identität des lokalen Teilnehmers bestätigen soll. Man übergibt den Domänennamen des IdP und optional das verwendete Protokoll, einen Hinweis auf den Benutzernamen und die erwartete Identität der Gegenseite.

Nach dem Aufruf holt der Browser beim Erzeugen von Offer oder Answer (createOffer()/createAnswer()) bzw. beim expliziten Aufruf von getIdentityAssertion() eine Identitätsbestätigung vom IdP und schreibt sie als a=identity-Attribut in die SDP. Die Gegenseite kann diese Bestätigung prüfen. Die bestätigte Identität steht anschließend über das Promise peerIdentity zur Verfügung. So lässt sich die Echtheit der Gegenseite unabhängig vom Signalisierungsserver belegen. Das ist vor allem für Ende-zu-Ende-vertrauenswürdige Kommunikation wichtig.

Das IdP-Skript lädt der Browser von https://<domainName>/.well-known/idp-proxy/<protocol> und führt es in einer isolierten Umgebung aus. Der Aufruf selbst ist synchron und stößt noch keine Netzwerkanfrage an. Er speichert nur die Konfiguration.

Parameter

Name Typ Default Beschreibung
$domainName Pflicht string Domänenname des Identity Providers, z. B. "idp.example.org". Von dieser Domäne lädt der Browser das IdP-Proxy-Skript.
$options object {} Optionales Objekt (RTCIdentityProviderOptions) mit folgenden Feldern:
  • protocol (string, Standard "default"): Pfadbestandteil unter /.well-known/idp-proxy/, über den mit dem IdP kommuniziert wird.
  • usernameHint (string): Hinweis, unter welchem Benutzernamen man angemeldet werden möchte, z. B. "alice@example.org".
  • peerIdentity (string): Identität, die von der Gegenseite erwartet wird. Stimmt sie nicht überein, schlägt die Prüfung fehl.
Ältere Firefox-Versionen erwarteten statt des Objekts die Positionsargumente (domainName, protocol, usernameHint).

Rückgabewert

Typ
void
Beschreibung
Kein Rückgabewert (undefined). Wenn die Verbindung bereits geschlossen ist, wird eine InvalidStateError-DOMException ausgelöst.

Beispiele

IdP mit Funktionsprüfung setzen

const pc = new RTCPeerConnection();

if (typeof pc.setIdentityProvider === 'function') {
  pc.setIdentityProvider('idp.example.org', {
    protocol: 'default',
    usernameHint: 'alice@example.org'
  });
  console.log('Identity Provider gesetzt');
} else {
  console.log('WebRTC Identity wird in diesem Browser nicht unterstützt');
}
Identity Provider gesetzt // in Firefox WebRTC Identity wird in diesem Browser nicht unterstützt // in Chrome/Safari

Identitätsbestätigung explizit anfordern

const pc = new RTCPeerConnection();
pc.setIdentityProvider('idp.example.org', { usernameHint: 'alice@example.org' });

try {
  // Löst die Kommunikation mit dem IdP aus
  const assertion = await pc.getIdentityAssertion();
  console.log('Assertion erhalten:', assertion.slice(0, 40) + '…');
} catch (err) {
  // z. B. Anmeldung beim IdP nötig
  console.error('IdP-Fehler:', err.name, pc.idpLoginUrl ?? '');
}
Assertion erhalten: eyJpZHAiOnsiZG9tYWluIjoiaWRwLmV4YW1wbGUu…

Erwartete Identität der Gegenseite festlegen und prüfen

const pc = new RTCPeerConnection();
pc.setIdentityProvider('idp.example.org', {
  peerIdentity: 'bob@example.org'
});

// Remote-Beschreibung (mit a=identity) aus der Signalisierung übernehmen
const applyRemoteOffer = async (offer) => {
  await pc.setRemoteDescription(offer);
  const identity = await pc.peerIdentity;
  console.log(`Gegenseite verifiziert: ${identity.name} via ${identity.idp}`);
};
Gegenseite verifiziert: bob@example.org via idp.example.org

// Wichtig · Fallstricke

  • Browser-Kompatibilität: Die Methode gibt es praktisch nur in Firefox. Chromium-Browser und Safari haben WebRTC Identity nie umgesetzt. Prüfen Sie deshalb immer mit typeof pc.setIdentityProvider === 'function', ob sie vorhanden ist. Für plattformübergreifende Anwendungen eignet sie sich nicht.
  • Die Methode ist experimentell. Die Signatur hat sich geändert: früher gab es Positionsargumente, heute ein Optionsobjekt. Ältere Codebeispiele sind deshalb eventuell nicht mehr gültig.
  • Wenn die Verbindung geschlossen ist (signalingState === 'closed'), löst der Aufruf eine InvalidStateError aus.
  • Das IdP-Skript muss per HTTPS unter /.well-known/idp-proxy/<protocol> erreichbar sein. Wenn eine Anmeldung nötig ist, schlägt die Anforderung fehl. In diesem Fall enthält idpLoginUrl die Anmelde-URL.
  • Sicherheit: Die Identitätsbestätigung schützt nur, wenn der Anwendungscode der Gegenseite nicht vertraut werden muss. Gleichen Sie die Identität aus peerIdentity selbst mit der erwarteten Identität ab.