Start · Sprachen · JavaScript · Referenz · FederatedCredential.protocol

FederatedCredential.protocol

Eigenschaft

Schreibgeschützte Eigenschaft, die das föderierte Identitätsprotokoll eines <code>FederatedCredential</code> als String liefert, z. B. <code>"openidconnect"</code>, oder <code>null</code>, wenn keins angegeben ist.

seit JavaScript Experimentell: nur Chromium-Browser (Chrome/Edge/O Kategorie: webapi

Signatur

get FederatedCredential.protocol

Beschreibung

Die Eigenschaft protocol der Schnittstelle FederatedCredential gehört zur Credential Management API. Sie gibt an, über welches Protokoll ein föderierter Identitätsanbieter die Anmeldung abwickelt, etwa "openidconnect" oder "oauth". Der Wert ist schreibgeschützt. Er wird beim Erzeugen des Berechtigungsnachweises über das Feld protocol im Init-Objekt von new FederatedCredential(init) festgelegt.

Mit provider sehen Sie, bei wem sich jemand angemeldet hat (z. B. https://accounts.google.com). Mit protocol sehen Sie, wie die Anmeldung abläuft. Das ist hilfreich, wenn ein Anbieter mehrere Verfahren unterstützt oder Ihre Anwendung je nach Protokoll einen anderen Anmeldeablauf starten muss, etwa einen OpenID-Connect-Flow statt eines klassischen OAuth-2.0-Flows.

Der Browser prüft das Protokoll nicht und führt auch keine Anmeldung durch. protocol ist nur eine Metainformation, die zusammen mit dem Berechtigungsnachweis gespeichert wird. Die eigentliche Anmeldung beim Identitätsanbieter muss Ihre Anwendung selbst umsetzen. Ist beim Erzeugen kein Protokoll angegeben, liefert die Eigenschaft null.

Rückgabewert

Typ
string | null
Beschreibung
Der Name des föderierten Identitätsprotokolls (z. B. "openidconnect") oder null, wenn beim Erzeugen des Berechtigungsnachweises kein Protokoll angegeben wurde.

Beispiele

Berechtigungsnachweis erzeugen und Protokoll auslesen

// Nur in Chromium-Browsern in einem sicheren Kontext (HTTPS)
const cred = new FederatedCredential({
  id: 'max.mustermann@example.com',
  name: 'Max Mustermann',
  provider: 'https://accounts.google.com',
  protocol: 'openidconnect'
});

console.log(cred.provider);
console.log(cred.protocol);
https://accounts.google.com openidconnect

Fehlendes Protokoll ergibt null

const cred = new FederatedCredential({
  id: 'nutzer-42',
  provider: 'https://login.example.org'
});

console.log(cred.protocol); // kein protocol im Init-Objekt
console.log(cred.protocol ?? 'unbekannt');
null unbekannt

Gespeicherten Nachweis abrufen und je nach Protokoll anmelden

const signIn = async () => {
  if (!('FederatedCredential' in window)) {
    console.log('FederatedCredential wird nicht unterstützt');
    return;
  }

  const cred = await navigator.credentials.get({
    federated: {
      providers: ['https://accounts.google.com'],
      protocols: ['openidconnect']
    },
    mediation: 'optional'
  });

  if (cred?.type !== 'federated') {
    console.log('Kein föderierter Nachweis gefunden');
    return;
  }

  switch (cred.protocol) {
    case 'openidconnect':
      console.log(`OIDC-Anmeldung bei ${cred.provider} für ${cred.id}`);
      // hier den eigenen OIDC-Flow starten
      break;
    default:
      console.log(`Anmeldung bei ${cred.provider} (Protokoll: ${cred.protocol ?? 'keins'})`);
  }
};

signIn();
OIDC-Anmeldung bei https://accounts.google.com für max.mustermann@example.com

// Wichtig · Fallstricke

  • Browser-Kompatibilität: FederatedCredential ist experimentell und nur in Chromium-Browsern verfügbar. Firefox und Safari unterstützen die Schnittstelle nicht. Prüfen Sie deshalb vorher mit 'FederatedCredential' in window, ob sie vorhanden ist.
  • Nur sicherer Kontext: Die Credential Management API steht nur unter HTTPS bzw. localhost zur Verfügung.
  • Keine Prüfung durch den Browser: Der Wert ist ein frei wählbarer String. Der Browser prüft nicht, ob das Protokoll existiert oder ob der Anbieter es unterstützt. Achten Sie auf einheitliche Schreibweisen (z. B. immer "openidconnect"), sonst findet der Filter protocols in navigator.credentials.get() keine Treffer.
  • Schreibgeschützt: Eine Zuweisung wie cred.protocol = 'oauth' hat keine Wirkung (im Strict Mode wird ein TypeError ausgelöst). Wenn Sie ein anderes Protokoll brauchen, erzeugen Sie einen neuen Nachweis und speichern ihn mit navigator.credentials.store().
  • Nicht für die Sicherheit verwenden: protocol belegt nicht, dass jemand angemeldet ist. Die Authentifizierung muss immer serverseitig über das Token des Identitätsanbieters geprüft werden.
  • Nachfolger: Für föderierte Anmeldungen empfiehlt sich heute die FedCM-API (IdentityCredential), die als Nachfolger von FederatedCredential gilt.