Signatur
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:
(domainName, protocol, usernameHint). |
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');
}
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 ?? '');
}
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}`);
};
// 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 eineInvalidStateErroraus. - 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ältidpLoginUrldie 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
peerIdentityselbst mit der erwarteten Identität ab.