Start · Sprachen · JavaScript · Referenz · IdentityCredential.configURL

IdentityCredential.configURL

Eigenschaft

Schreibgeschützte Eigenschaft, die die URL der Konfigurationsdatei des Identity Providers (IdP) enthält, über den sich der Nutzer per FedCM angemeldet hat.

seit JavaScript Experimentell: Chromium-basierte Browser (Chrome/E Kategorie: webapi

Signatur

IdentityCredential.configURL

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

Typ
string
Beschreibung
Die vollständige URL der Konfigurationsdatei des Identity Providers, der für die Anmeldung verwendet wurde. Sie entspricht dem Wert von 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));
identity https://idp.example/fedcm.json

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);
Angemeldet über login.idp-b.example: true

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');
FedCM mit configURL verfügbar

// Wichtig · Fallstricke

  • Experimentell und nur in Chromium verfügbar: FedCM und damit configURL gibt 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: configURL sagt nur, welcher IdP gewählt wurde. Das token muss 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 providers angegeben 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-get erlaubt sein.
  • Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird ignoriert bzw. löst im Strict Mode einen TypeError aus.