Start · Sprachen · JavaScript · Referenz · IdentityCredential.isAutoSelected

IdentityCredential.isAutoSelected

Eigenschaft

Schreibgeschützter Wahrheitswert, der angibt, ob die föderierte FedCM-Anmeldung per automatischer Neuauthentifizierung ohne Nutzerinteraktion abgeschlossen wurde.

seit JavaScript Chromium 122+ (FedCM, experimentell; kein Firefox/ Kategorie: webapi

Signatur

IdentityCredential.isAutoSelected

Beschreibung

Die Eigenschaft isAutoSelected der Schnittstelle IdentityCredential gehört zur Federated Credential Management API (FedCM). Sie ist true, wenn der Browser das Konto automatisch ausgewählt und die Anmeldung ohne Klick abgeschlossen hat (automatische Neuauthentifizierung, auto-reauthentication). Hat der Nutzer das Konto selbst im FedCM-Dialog gewählt, ist sie false.

Zur automatischen Neuauthentifizierung kommt es, wenn navigator.credentials.get() mit mediation: "optional" (Standard) oder "silent" aufgerufen wird, der Nutzer sich schon früher über denselben Identitätsanbieter (IdP) bei der vertrauenden Seite (RP) angemeldet hat und genau ein passendes, wiederkehrendes Konto vorhanden ist. Bei mediation: "required" gibt es keine automatische Auswahl.

Praktisch hilft die Eigenschaft bei der Analyse und Gestaltung der Oberfläche: Sie können messen, wie viele Anmeldungen still ablaufen, eine passende Begrüßung einblenden (z. B. „Sie wurden automatisch angemeldet – nicht Sie?“) oder den Wert an den Server weitergeben. Auch der IdP erhält die Information: Sie wird als Parameter is_auto_selected an den ID-Assertion-Endpunkt gesendet.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn die Anmeldung über automatische Neuauthentifizierung ablief, sonst false. Die Eigenschaft ist schreibgeschützt.

Beispiele

FedCM-Anmeldung und Auswertung von isAutoSelected

const signIn = async () => {
  const credential = await navigator.credentials.get({
    identity: {
      providers: [{
        configURL: 'https://idp.example/fedcm.json',
        clientId: 'rp-client-123',
        nonce: crypto.randomUUID()
      }]
    },
    mediation: 'optional' // erlaubt automatische Neuauthentifizierung
  });

  console.log('Token:', credential.token.slice(0, 12) + '…');
  console.log('Automatisch ausgewählt:', credential.isAutoSelected);
  return credential;
};

signIn().catch((err) => console.error('Anmeldung fehlgeschlagen:', err));
Token: eyJhbGciOiJS… Automatisch ausgewählt: true

Hinweis-Banner nach automatischer Anmeldung einblenden

const showAutoLoginBanner = (name) => {
  const banner = document.createElement('div');
  banner.className = 'auto-login-banner';
  banner.textContent = `Automatisch angemeldet als ${name}. `;
  const link = document.createElement('a');
  link.href = '/logout';
  link.textContent = 'Nicht Sie?';
  banner.append(link);
  document.body.prepend(banner);
};

const login = async () => {
  const cred = await navigator.credentials.get({
    identity: { providers: [{ configURL: 'https://idp.example/fedcm.json', clientId: 'rp-client-123' }] }
  });
  const res = await fetch('/api/session', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ token: cred.token })
  });
  const user = await res.json();
  if (cred.isAutoSelected) showAutoLoginBanner(user.name);
};

login();

Feature-Erkennung und Telemetrie

const supportsAutoSelected =
  'IdentityCredential' in window &&
  'isAutoSelected' in IdentityCredential.prototype;

const trackLogin = (cred) => {
  const payload = {
    method: 'fedcm',
    autoSelected: supportsAutoSelected ? cred.isAutoSelected : null
  };
  navigator.sendBeacon('/analytics/login', JSON.stringify(payload));
};

console.log('isAutoSelected unterstützt:', supportsAutoSelected);
isAutoSelected unterstützt: true

// Wichtig · Fallstricke

  • Browser-Kompatibilität: FedCM und isAutoSelected gibt es nur in Chromium-basierten Browsern (Chrome/Edge ab Version 122). Firefox und Safari unterstützen sie nicht. Prüfen Sie die Unterstützung daher immer vorher per Feature-Erkennung.
  • Die API ist nur in einem sicheren Kontext (HTTPS) verfügbar. In iframes muss die Permissions Policy identity-credentials-get erlaubt sein.
  • Auch bei mediation: "optional" ist isAutoSelected nicht garantiert true: Der Browser unterdrückt die automatische Neuauthentifizierung z. B. für eine Sperrzeit (etwa 10 Minuten) nach einer vorherigen automatischen Anmeldung, nach einem Abmelden per IdentityCredential.preventSilentAccess() oder wenn mehrere wiederkehrende Konten vorhanden sind.
  • Sicherheit: Verlassen Sie sich bei Sicherheitsentscheidungen nicht allein auf den clientseitigen Wert. Entscheidend ist die serverseitige Prüfung des token. Der IdP erhält den Wert zusätzlich als is_auto_selected im Assertion-Request.
  • Bieten Sie nach einer automatischen Anmeldung immer eine sichtbare Möglichkeit an, sich abzumelden oder das Konto zu wechseln.