Signatur
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
"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);
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');
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();
// Wichtig · Fallstricke
- Browser-Kompatibilität:
FederatedCredentialist 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.
localhostzur 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 Filterprotocolsinnavigator.credentials.get()keine Treffer. - Schreibgeschützt: Eine Zuweisung wie
cred.protocol = 'oauth'hat keine Wirkung (im Strict Mode wird einTypeErrorausgelöst). Wenn Sie ein anderes Protokoll brauchen, erzeugen Sie einen neuen Nachweis und speichern ihn mitnavigator.credentials.store(). - Nicht für die Sicherheit verwenden:
protocolbelegt 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 vonFederatedCredentialgilt.