Start · Sprachen · JavaScript · Referenz · FederatedCredential.provider

FederatedCredential.provider

Eigenschaft

Schreibgeschützte Eigenschaft, die den föderierten Identitätsanbieter (z. B. <code>https://accounts.google.com</code>) eines <code>FederatedCredential</code> als String liefert.

seit JavaScript Credential Management API Level 1 – nur Chromium-B Kategorie: webapi

Signatur

FederatedCredential.provider

Beschreibung

Die schreibgeschützte Eigenschaft provider der Schnittstelle FederatedCredential enthält den Identitätsanbieter (Identity Provider, IdP), bei dem sich der Benutzer angemeldet hat. Laut Spezifikation ist der Wert eine serialisierte Origin, also eine URL aus Schema, Host und ggf. Port ohne Pfad, zum Beispiel https://accounts.google.com oder https://www.facebook.com.

Gebraucht wird die Eigenschaft vor allem dann, wenn eine Website Anmeldedaten über navigator.credentials.get({ federated: { providers: [...] } }) abruft. Der Browser gibt dann ein FederatedCredential zurück, und über provider lässt sich erkennen, welcher Anbieter gespeichert war. Damit kann die Anwendung den richtigen OAuth- oder OpenID-Connect-Ablauf starten, zum Beispiel mit einem login_hint, der aus credential.id gebildet wird.

Der Wert wird beim Erstellen über den Konstruktor new FederatedCredential({ id, provider, ... }) festgelegt und lässt sich danach nicht mehr ändern. Wichtig: Das Credential speichert nur, dass der Benutzer einen bestimmten Anbieter verwendet hat. Tokens oder Passwörter enthält es nicht. Die eigentliche Authentifizierung übernimmt weiterhin der Anbieter.

Rückgabewert

Typ
string
Beschreibung
Die serialisierte Origin des föderierten Identitätsanbieters, z. B. "https://accounts.google.com".

Beispiele

FederatedCredential erstellen und speichern

// Nach erfolgreichem Login über Google das Credential im Browser ablegen
const saveGoogleLogin = async (email, displayName, avatarUrl) => {
  if (!('FederatedCredential' in window)) {
    console.warn('FederatedCredential wird nicht unterstützt');
    return;
  }
  const cred = new FederatedCredential({
    id: email,
    provider: 'https://accounts.google.com',
    name: displayName,
    iconURL: avatarUrl
  });
  console.log(cred.provider);
  await navigator.credentials.store(cred);
};

saveGoogleLogin('max@example.com', 'Max Muster', 'https://example.com/max.png');
https://accounts.google.com

Gespeichertes Credential abrufen und Anbieter auswerten

const autoSignIn = async () => {
  const cred = await navigator.credentials.get({
    federated: {
      providers: ['https://accounts.google.com', 'https://www.facebook.com']
    },
    mediation: 'optional'
  });

  if (!cred || cred.type !== 'federated') {
    console.log('Kein föderiertes Credential gefunden');
    return;
  }

  switch (cred.provider) {
    case 'https://accounts.google.com':
      console.log(`Google-Login für ${cred.id} starten`);
      break;
    case 'https://www.facebook.com':
      console.log(`Facebook-Login für ${cred.id} starten`);
      break;
    default:
      console.log(`Unbekannter Anbieter: ${cred.provider}`);
  }
};

autoSignIn();
Google-Login für max@example.com starten

Anbieter-Origin normalisiert vergleichen

// Vorsichtig vergleichen: nur die Origin zählt, nicht Pfad oder abschließender Slash
const isProvider = (cred, url) => new URL(cred.provider).origin === new URL(url).origin;

const cred = new FederatedCredential({
  id: 'max@example.com',
  provider: 'https://accounts.google.com'
});

console.log(isProvider(cred, 'https://accounts.google.com/'));
console.log(isProvider(cred, 'https://login.microsoftonline.com'));
true false

// Wichtig · Fallstricke

  • Browser-Kompatibilität: FederatedCredential gibt es nur in Chromium-basierten Browsern. Firefox und Safari unterstützen es nicht. Deshalb vorher mit 'FederatedCredential' in window prüfen und eine eigene Anmeldeoberfläche als Rückfall anbieten.
  • Nur in sicheren Kontexten: Die API steht nur über HTTPS (oder localhost) zur Verfügung.
  • Kein Nachweis der Identität: provider und id sind nur ein Hinweis darauf, welchen Anbieter der Benutzer gewählt hat. Der Server muss die Anmeldung trotzdem immer über den Anbieter prüfen, also OAuth-/OIDC-Token validieren. Den Wert nie als Beweis für eine Authentifizierung werten.
  • String-Vergleiche: Der Wert ist eine Origin ohne abschließenden Slash. Werte wie https://accounts.google.com/ passen beim direkten Vergleich mit === nicht. Besser über new URL(...).origin normalisieren.
  • Nicht mit FedCM verwechseln: Die neuere Federated Credential Management API (FedCM) arbeitet mit IdentityCredential und navigator.credentials.get({ identity: ... }). FederatedCredential gilt als veraltetes Konzept und wird in Chrome zugunsten von FedCM zurückgedrängt.