Signatur
Beschreibung
Der Konstruktor IdentityCredentialError() erzeugt eine Instanz von IdentityCredentialError. Diese Klasse erweitert DOMException und gehört zur Federated Credential Management API (FedCM). Sie beschreibt Fehler, die ein Identitätsanbieter (IdP) während einer föderierten Anmeldung meldet, z. B. wenn der id_assertion_endpoint statt eines Tokens ein Fehlerobjekt zurückgibt.
Normalerweise erzeugt der Browser solche Objekte selbst: Das Promise von navigator.credentials.get({ identity: … }) wird mit einem IdentityCredentialError abgelehnt. Über die Eigenschaften error (Fehlercode, z. B. "invalid_request", "unauthorized_client", "access_denied", "server_error", "temporarily_unavailable") und url (Seite mit Erklärungen für Nutzer) kann die vertrauende Seite (Relying Party) passend reagieren.
Den Konstruktor selbst aufzurufen ist vor allem in Tests, Mocks und Polyfills sinnvoll, etwa um die Fehlerbehandlung der eigenen Anmeldelogik ohne echten Identitätsanbieter zu prüfen. Die Eigenschaft name der Instanz lautet immer "IdentityCredentialError".
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $message | string | "" | Lesbare Fehlerbeschreibung; landet in der geerbten Eigenschaft message. |
| $options | object | {} | Optionales Konfigurationsobjekt mit den Feldern:
|
Rückgabewert
IdentityCredentialError-Instanz (Unterklasse von DOMException) mit den Eigenschaften name, message, error und url.Beispiele
Instanz erzeugen und Eigenschaften lesen
const err = new IdentityCredentialError('Anmeldung abgelehnt', {
error: 'access_denied',
url: 'https://idp.example/hilfe/zugriff-verweigert'
});
console.log(err.name);
console.log(err.message);
console.log(err.error);
console.log(err.url);
console.log(err instanceof DOMException);
FedCM-Fehler bei der Anmeldung behandeln
const signIn = async () => {
try {
const credential = await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/fedcm.json',
clientId: 'meine-app-123'
}]
}
});
return credential.token;
} catch (e) {
if (typeof IdentityCredentialError !== 'undefined' &&
e instanceof IdentityCredentialError) {
console.warn(`IdP-Fehler: ${e.error || 'unbekannt'}`);
if (e.url) console.info(`Weitere Infos: ${e.url}`);
} else {
console.error('Sonstiger Fehler:', e.name, e.message);
}
return null;
}
};
signIn();
Fehlerbehandlung im Test mit einem Mock prüfen
// navigator.credentials.get durch einen Mock ersetzen
const originalGet = navigator.credentials.get.bind(navigator.credentials);
navigator.credentials.get = async () => {
throw new IdentityCredentialError('IdP nicht erreichbar', {
error: 'server_error'
});
};
const meldeFehler = (e) =>
e.name === 'IdentityCredentialError' ? `FedCM: ${e.error}` : 'Unbekannt';
try {
await navigator.credentials.get({ identity: { providers: [] } });
} catch (e) {
console.log(meldeFehler(e));
} finally {
navigator.credentials.get = originalGet; // Original wiederherstellen
}
// Wichtig · Fallstricke
- Experimentell: Die API ist nur in Chromium-Browsern (Chrome, Edge, Opera) ab etwa Version 120 verfügbar, Firefox und Safari unterstützen sie nicht. Vor der Nutzung mit
typeof IdentityCredentialError !== 'undefined'auf Unterstützung prüfen. - In frühen Entwürfen hieß die Eigenschaft
codestatterror. Ältere Beispiele oder Implementierungen können deshalb abweichen. - Nur in sicheren Kontexten (HTTPS) verfügbar, wie die gesamte FedCM-API.
- Nicht jeder Fehler aus
navigator.credentials.get()ist einIdentityCredentialError. Abbruch durch Nutzer oder einAbortSignalergibt z. B. einen normalenDOMExceptionmitNetworkErrorbzw.AbortError. Daher immer perinstanceofodernameunterscheiden. - Die
urlstammt vom Identitätsanbieter. Vor dem Anzeigen oder Verlinken sollte man sie prüfen, z. B. ob sie zur erwarteten IdP-Herkunft passt. So verhindert man, dass Nutzer auf fremde Seiten weitergeleitet werden.