Chrome onAuthRequired: controleer isProxy voordat inloggegevens worden verzonden
De authenticatie-callback van Chrome kan een proxy- of een origin-uitdaging beschrijven. Dezelfde inloggegevens aan beide geven is een fout in het bereik van de inloggegevens.
Een browserextensie kan authenticatie-uitdagingen tegenkomen van twee verschillende plaatsen: de proxy die het verzoek vervoert en de bestemmingswebsite. Ze mogen niet automatisch hetzelfde account krijgen.
De nuttige onderscheider in Chrome's webRequest.onAuthRequired-gebeurtenis is isProxy. Een callback die die controle verwijdert alleen om een prompt te laten verdwijnen, kan proxy-inloggegevens gaan leveren aan een origin-uitdaging.
Sluit aan bij de proxy die je wilt vertrouwen
Het controleren van isProxy is een begin. Beperk ook de afhandeling tot de verwachte proxy-uitdager en de verzoekcontext. Een extensie die meerdere eindpunten beheert, moet het account kiezen dat bij dat eindpunt hoort, niet één globaal wachtwoord voor elke uitdaging.
Ga er niet van uit dat het instellen van de proxy-route en het afhandelen van de login één machtiging of één API-aanroep zijn. Chrome documenteert ze apart. Gebruik de huidige webRequest-referentie voor gebeurtenisgegevens en authenticatiemachtigingen. Een voorbeeld van het registreren van een Manifest V3-listener toont synchrone registratie en accountkeuze binnen de callback.
Controleer de manifestgeneratie
Voorbeelden die een experimentele WebRequest-API noemen, komen uit oude extensiereleases. Huidige machtigingsvereisten hangen af van de manifestgeneratie van de extensie en het implementatiemodel. Met name de authenticatie-afhandeling heeft een eigen ondersteund machtigingspad; een verouderd voorbeeld van een blokkerende listener is niet genoeg om vast te stellen dat een Manifest V3-extensie die ongewijzigd kan uitvoeren.
Een correcte handler moet ook voorkomen dat dezelfde geweigerde inloggegevens eindeloos opnieuw worden geprobeerd. Behandel een tweede uitdaging na een geleverd account als bewijs om te onderzoeken, niet als een verzoek om het wachtwoord voor altijd opnieuw af te spelen.
Inloggegevens moeten in het juiste beschermde afhandelingspad van de extensie blijven. Publiceer ze niet in een PAC-bestand en hardcode ze niet in een gedistribueerd voorbeeld. Het doel is een nauw begrensde proxy-login, niet een browserbrede regel die elke authenticatie-uitdaging met hetzelfde geheim beantwoordt.