Signatur
Beschreibung
Die Eigenschaft configURL gehört zu einem IdentityCredential-Objekt. Dieses Objekt erhält man, wenn eine Anmeldung über die Federated Credential Management API (FedCM) erfolgreich war, also wenn navigator.credentials.get({ identity: … }) erfüllt wird. Der Wert ist eine Zeichenkette mit der URL der IdP-Konfigurationsdatei (z. B. https://idp.example/fedcm.json). Diese URL hat die vertrauende Seite (Relying Party, RP) vorher im Array identity.providers als configURL angegeben.
Wichtig wird die Eigenschaft, wenn eine Seite mehrere Identity Provider gleichzeitig anbietet. Der Browser zeigt alle konfigurierten IdPs in einem gemeinsamen Dialog an, und der Nutzer wählt einen davon aus. Mit configURL erfährt die Seite, welcher Provider das zurückgegebene token ausgestellt hat. Erst dann kann sie das Token an den passenden Validierungs-Endpunkt im eigenen Backend schicken.
Die Eigenschaft ist schreibgeschützt. Zusammen mit token und isAutoSelected beschreibt sie das Ergebnis der Anmeldung. Da IdentityCredential von Credential erbt, stehen außerdem id und type ("identity") zur Verfügung.
Rückgabewert
configURL aus dem passenden Eintrag in identity.providers.Beispiele
Einfache FedCM-Anmeldung und configURL auslesen
const signIn = async () => {
const credential = await navigator.credentials.get({
identity: {
providers: [
{
configURL: 'https://idp.example/fedcm.json',
clientId: 'rp-client-123',
nonce: crypto.randomUUID()
}
]
}
});
console.log(credential.type); // Credential-Typ
console.log(credential.configURL); // verwendeter IdP
return credential.token;
};
signIn().catch((err) => console.error('Anmeldung fehlgeschlagen:', err));
Mehrere IdPs: Token an das passende Backend weiterleiten
const providers = [
{ configURL: 'https://accounts.idp-a.example/fedcm.json', clientId: 'a-123' },
{ configURL: 'https://login.idp-b.example/config.json', clientId: 'b-456' }
];
// Zuordnung: configURL -> Validierungs-Endpunkt im eigenen Backend
const verifyEndpoints = new Map([
['https://accounts.idp-a.example/fedcm.json', '/auth/idp-a'],
['https://login.idp-b.example/config.json', '/auth/idp-b']
]);
const login = async () => {
const credential = await navigator.credentials.get({
identity: { providers }
});
const endpoint = verifyEndpoints.get(credential.configURL);
if (!endpoint) {
throw new Error(`Unbekannter IdP: ${credential.configURL}`);
}
const res = await fetch(endpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ token: credential.token })
});
console.log(`Angemeldet über ${new URL(credential.configURL).hostname}:`, res.ok);
};
login().catch(console.error);
Funktionsprüfung vor der Nutzung
const supportsConfigURL =
'IdentityCredential' in window &&
'configURL' in IdentityCredential.prototype;
console.log(supportsConfigURL
? 'FedCM mit configURL verfügbar'
: 'Fallback auf klassischen OAuth-Redirect nötig');
// Wichtig · Fallstricke
- Experimentell und nur in Chromium verfügbar: FedCM und damit
configURLgibt es derzeit nur in Chromium-basierten Browsern. Firefox und Safari unterstützen die Eigenschaft nicht. Vorher per Funktionsprüfung testen und einen Fallback bereitstellen, z. B. einen klassischen OAuth- oder OpenID-Connect-Redirect. - Nur ein Hinweis auf den Aussteller, keine Echtheitsprüfung:
configURLsagt nur, welcher IdP gewählt wurde. Dastokenmuss trotzdem immer serverseitig gegen diesen IdP validiert werden, also Signatur, Aussteller, Zielgruppe (aud/Client-ID) und Nonce prüfen. - Beim Abgleich die URL exakt mit dem Wert vergleichen, der in
providersangegeben wurde. Kleine Abweichungen wie ein Schrägstrich am Ende oder die Groß-/Kleinschreibung führen sonst zu fehlgeschlagenen Zuordnungen. - FedCM braucht einen sicheren Kontext (HTTPS). In iframes muss die Permissions-Policy
identity-credentials-geterlaubt sein. - Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird ignoriert bzw. löst im Strict Mode einen
TypeErroraus.