Signatur
Beschreibung
Die Eigenschaft idp des Interfaces RTCIdentityAssertion enthält den Domänennamen des Identity Providers (z. B. "idp.example.org"), der die Identitätsbehauptung (Identity Assertion) des entfernten Peers geprüft hat. Zusammen mit RTCIdentityAssertion.name ergibt sich daraus, wer der Gesprächspartner ist und wer das bestätigt.
Ein RTCIdentityAssertion-Objekt bekommt man in der Regel nicht selbst, sondern über das Promise RTCPeerConnection.peerIdentity. Es wird erfüllt, sobald der Browser die im SDP der Gegenseite enthaltene Identitätsbehauptung beim angegebenen IdP erfolgreich überprüft hat. Schlägt die Prüfung fehl, wird das Promise abgelehnt.
Einsatzbereich: Ende-zu-Ende-Anwendungen, bei denen die Signalisierung über einen nicht vertrauenswürdigen Server läuft. Anhand von idp kann die Anwendung entscheiden, ob sie dem bestätigenden Anbieter vertraut, z. B. indem sie ihn mit einer Liste erlaubter IdP-Domänen abgleicht, bevor sie dem Nutzer den Namen des Gegenübers als „verifiziert“ anzeigt.
Rückgabewert
"idp.example.org". Laut Spezifikation ist das Attribut beschreibbar, im Normalfall liest man den Wert aber nur aus.Beispiele
IdP des entfernten Peers auslesen
const pc = new RTCPeerConnection();
// ... Signalisierung: Remote-Description setzen usw.
const showPeerIdentity = async () => {
try {
const assertion = await pc.peerIdentity;
console.log(`Identität: ${assertion.name}`);
console.log(`Bestätigt durch: ${assertion.idp}`);
} catch (err) {
console.error('Identität konnte nicht verifiziert werden:', err);
}
};
showPeerIdentity();
Nur vertrauenswürdige Identity Provider akzeptieren
const TRUSTED_IDPS = new Set(['idp.example.org', 'login.firma.de']);
const verifyPeer = async (pc) => {
const { idp, name } = await pc.peerIdentity;
if (!TRUSTED_IDPS.has(idp)) {
pc.close();
throw new Error(`Nicht vertrauenswürdiger IdP: ${idp}`);
}
return name;
};
verifyPeer(pc)
.then((name) => console.log(`Verifizierter Gesprächspartner: ${name}`))
.catch((err) => console.warn(err.message));
Eigenen IdP festlegen und Objekt direkt erzeugen (Firefox)
const pc = new RTCPeerConnection();
// Eigene Identität über einen IdP bestätigen lassen
if (typeof pc.setIdentityProvider === 'function') {
pc.setIdentityProvider('idp.example.org', {
protocol: 'default',
usernameHint: 'bob@idp.example.org'
});
}
// Konstruktor laut Spezifikation (z. B. für Tests)
if ('RTCIdentityAssertion' in window) {
const assertion = new RTCIdentityAssertion('idp.example.org', 'bob@idp.example.org');
console.log(assertion.idp);
}
// Wichtig · Fallstricke
- Kompatibilität: Die WebRTC-Identity-API (
RTCIdentityAssertion,peerIdentity,setIdentityProvider()) wird nur von Firefox unterstützt. Chrome, Edge und Safari haben sie nicht umgesetzt. Vorher per Feature-Erkennung prüfen, z. B. mit'peerIdentity' in RTCPeerConnection.prototype. - Sicherheit: Ein erfüllter
peerIdentity-Promise heißt nur, dass irgendein IdP die Identität bestätigt hat. Ob du diesem IdP vertraust, musst du selbst prüfen, am besten mit einer Liste erlaubter Domänen. Sonst kann ein Angreifer seinen eigenen IdP betreiben und sich beliebige Namen bestätigen lassen. peerIdentitywird erst erfüllt, wenn die Remote-Description eine Identitätsbehauptung (a=identity) enthält. Ohne sie bleibt das Promise offen. Daher solltest du bei Bedarf eine Zeitbegrenzung einbauen.- Der Wert ist eine reine Domäne ohne Protokoll und ohne Pfad. Der IdP-Proxy wird unter
https://<idp>/.well-known/idp-proxy/<protocol>geladen.